除了导致需要进行不必要的转换之外,这没有做任何事情(或者更确切地说,导致我拉下代码库并自己进行更改)。这样做有什么理由吗?
引用资料:
编辑 这是一个例子:
DoCommand = new RelayCommand<AsyncCallback>((callBack) =>
{
Console.WriteLine("In the Action<AsyncCallback>");
SomeAsyncFunction((async_result) =>
{
Console.WriteLine("In the AsyncCallback");
callBack.Invoke(new MyAsyncResult(true));
});
});
DoCommand.Execute((iasyncresult) => Console.WriteLine(iasyncresult.IsCompleted));
//Where MyAsyncResult is a class implement IAsyncResult that sets IsCompleted in the constructor
// This will cause the "cannot cast lambda as object" error
最佳答案
因为 ICommand不是通用的。 ICommand 的通用实现必须从接口(interface)转换,处理无效转换,并将转换实例转发给通用方法。
关于c# - 为什么 RelayCommand<T>.Execute 采用对象而不是 T?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6296396/