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