代码之家  ›  专栏  ›  技术社区  ›  Barracoder

调用DelegateCommand子类上的Execute时,ProgramException无效

  •  0
  • Barracoder  · 技术社区  · 14 年前

    我有delegatecommand的一个子类,该类失败并带有一个无效的programmexception,“命令语言运行时检测到一个无效的程序。”当我调用execute时。

    我的子类如下:

        public class SaveOrderCommand : DelegateCommand<IOrder>
    {
        [Dependency]
        public IOrderService OrderService { get; set; }
    
        public SaveOrderCommand()
            : base(p => this.ExecuteSaveOrder(p), p => this.CanExecuteSaveOrder(p))
        { }
    
        public bool CanExecuteSaveOrder(IOrder order)
        {
            return true;
        }
    
        public void ExecuteSaveOrder(IOrder order)
        {
            if (order == null)
                return;
    
            IProductOrderService productSpecificOrderService = this.OrderService.RegisteredServices[order.GetType()] as IProductOrderService;
            order = productSpecificOrderService.Save(order);
        }
    }
    

    我可以看到,将基类引用到子类中的方法可能是一个问题,但如果这是问题所在,是否有人建议更好的实现?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Abe Heidebrecht    14 年前

    也许你应该实现 ICommand 你自己?你的班级将成为:

    public class SaveOrderCommand : ICommand
    {
        [Dependency]
        public IOrderService OrderService { get; set; }
    
        public event EventHandler CanExecuteChanged;
    
        public bool CanExecute(object parameter)
        {
            return parameter is IOrder;
        }
    
        public void Execute(object parameter)
        {
            var order = parameter as IOrder;
            if (order == null)
                return;
    
            IProductOrderService productSpecificOrderService = this.OrderService.RegisteredServices[order.GetType()] as IProductOrderService;
            order = productSpecificOrderService.Save(order);
        }
    }