我认为我会围绕代表,因为它创建了对方法的引用,然后可以通过“外部”代码(另一个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&lt;&gt;正在发生一些诡计。对象
答案 0 :(得分:1)
Action<object>
是代表。当你写:
new RelayCommand(AddUser, null)
编译器将其重写为:
new RelayCommand(new Action<object>(AddUser), null)
正如您所期望的那样,它创建了对方法的引用。