我想我已经弄清楚了委托,因为它创建了一个对方法的引用,然后可以被“外部”代码(另一个dll/项目)引用。
现在我正在使用MVVM,我看到了一个叫做RelayCommand的东西,它看起来就像是在传递一个方法作为一个参数,就像传递一个委托一样。这怎麽可能?
我正在查看的代码是
public RelayCommand AddUserCommand { get; set; }
public ViewModelMain()
{
this.AddUserCommand = new RelayCommand(AddUser, null);
}
void AddUser(object parameter)
{
//logic
}而RelayCommand对象是
public class RelayCommand : ICommand
{
public RelayCommand(Action<object> execute, Predicate<object> canExecute)
{
//logic
}
}因此,既然没有委托,我可以假定Action<>对象发生了一些欺骗吗?
发布于 2013-02-26 18:21:42
Action<object>是一个代表。当你写的时候:
new RelayCommand(AddUser, null)编译器将其替换为:
new RelayCommand(new Action<object>(AddUser), null)正如您所期望的那样,它创建了对方法的引用。
https://stackoverflow.com/questions/15086476
复制相似问题