InvalidProgramException при вызове Execute в подклассе DelegateCommand - PullRequest
0 голосов
/ 06 апреля 2010

У меня есть подкласс DelegateCommand, который завершается с ошибкой InvalidProgramException «Среда выполнения языка команд обнаружила недопустимую программу». когда я звоню Выполнить.

Мой подкласс выглядит так:

    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 Ответ

1 голос
/ 06 апреля 2010

Возможно, вам следует просто реализовать 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);
    }
}
...