我看到PRISM声明了以下构造函数,我不明白当调用基本构造函数时,作为第二个参数的lambda函数使用的“o”是什么:
public DelegateCommand(Action<T> executeMethod)
: this(executeMethod, (o)=>true)
{
}
我很感激解释。
答案 0 :(得分:11)
你发布的声明的构造函数调用另一个构造函数,所以为了解释它,我们首先应该看看其他构造函数的签名:
public DelegateCommand(Action<T> executeMethod, Func<T, bool> canExecuteMethod)
所以第二个参数是Func<T, bool>
。这意味着它是一个函数,它接受类型T
的参数并返回一个布尔值。
现在,如果你看一下使用的lambda:
(o) => true
Lambda通常具有语法(parameter-list) => lambda-body
,因此在这种情况下,lambda的单个参数是变量o
(该类型被推断为T
)和函数返回常量结果true
。
这样做的目的是基本上创建一个始终可执行的命令。
当然lambda看起来要复杂得多,所以在使用DelegateCommand时,你可能会使用更复杂和非常量的表达式。例如:
new DelegateCommand(DoSomething, o => o.SomeProperty >= 0 && o.SomeProperty < 10 && o.SomeBoolProperty)
答案 1 :(得分:3)
它调用此构造函数:
DelegateCommand<T>(Action<T>, Func<T, Boolean>)
传递一个总是返回true的lambda作为第二个参数