我有以下代码,但它无法编译,因为编译器无法确定我的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
}发布于 2010-02-08 01:52:17
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
}https://stackoverflow.com/questions/2217626
复制相似问题