ICommand _canExecute проблема - PullRequest
       13

ICommand _canExecute проблема

0 голосов
/ 07 февраля 2010

У меня есть следующий код, и он не будет компилироваться, потому что компилятор не может определить тип возврата моего метода CanExecute. Может ли кто-нибудь помочь мне в том, что не так?

class ViewCommand : ICommand
    {
        #region ICommand Members

        public delegate Predicate<object> _canExecute(object param);
        private ICommand _Execute;

        _canExecute exe;

        public bool CanExecute(object parameter)
        {
            return exe == null ? true : exe(parameter); // <-- Error no implicit conversion between Predicate<object> and bool
        }

... // more code
}

1 Ответ

1 голос
/ 07 февраля 2010

Интерфейс ICommand объявляет CanExecute как функцию, которая принимает параметр и возвращает логическое значение.

Ваш _canExecute принимает параметр и возвращает Predicate<object>

Способ вызова, состоящий в том, чтобы передать параметр в возвращаемое значение exe

exe(parameter)(parameter);

Я сомневаюсь, что это было ваше намерение.

Я думаю, что вы хотите объявить exe в качестве предиката и пропустить объявление делегата.

private Predicate<object> exe;

Я думаю, вы хотите выглядеть так:

class ViewCommand : ICommand
    {
        #region ICommand Members

        private ICommand _Execute;

        Predicate<object> exe;

        public bool CanExecute(object parameter)
        {
            return exe == null ? true : exe(parameter); // <-- Error no implicit conversion between Predicate<object> and bool
        }

... // more code
}
...