这个 ICommand 属性 是如何工作的?

How does this ICommand property work?

我将不胜感激以下代码的帮助:

public static ICommand AddNewRecord { get; set; }

以上代码在 WPF 应用程序的 App.xaml.cs 文件中。我不明白的是:如果我是正确的,则无法实例化接口。那么上面的属性有什么作用呢?

这是使用上述 属性 的代码(如果是这样的话):

AddNewRecord = new RCommand<IEnumerable>(list =>
  {
    var elementType = list.GetType().GetGenericArguments()[0];

    // More code I can't disclose.

  }, list => list != null);

我不能随意提供整个代码段。

RCommand<IEnumerable> 是实现 ICommand 接口的具体类型,您可以将 ICommand 属性 设置为实现 ICommand 接口的任何类型.

所以代码基本上创建了一个 RCommand<IEnumerable> 并将 AddNewRecord 属性 设置给它。

RCommand<IEnumerable> class 反过来似乎接受一个 Action<IEnumerable> ,它在执行命令时被调用,一个 Predicate<IEnumerable> 将从 CanExecute命令的方法。