5

我看到 PRISM 声明了以下构造函数,但我不明白在调用基本构造函数时用作第二个参数的 lambda 函数使用的“o”是什么:

public DelegateCommand(Action<T> executeMethod)
    : this(executeMethod, (o)=>true)
{            
}

我会很感激解释。

4

2 回答 2

11

您发布的声明的构造函数调用另一个构造函数,因此要解释它,我们应该首先查看另一个构造函数的签名:

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)
于 2013-09-16T13:12:35.560 回答
3

它调用这个构造函数:

DelegateCommand<T>(Action<T>, Func<T, Boolean>)

传递一个始终返回 true 作为第二个参数的 lambda

于 2013-09-16T13:12:16.857 回答