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 回答