0

次のコードがありますが、コンパイラが 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
}
4

1 に答える 1

1

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
}
于 2010-02-07T17:52:16.997 に答える