委托要创建一个委托从一个方法,你可以使用编译类型安全的语法:创建一个从属性的getter和setter方法
private int Method() { ... }
// and create the delegate to Method...
Func<int> d = Method;
属性是围绕一个getter和setter方法的包装,和我想创建一个委托给属性getter方法。类似于
public int Prop { get; set; }
Func<int> d = Prop;
// or...
Func<int> d = Prop_get;
不幸的是,这不起作用。我要创建一个单独的拉姆达方法,它似乎是不必要当吸气剂的方法相匹配的委托签名反正:
Func<int> d =() => Prop;
为了直接使用委托方法,我已经使用讨厌反射,这是不编译类型安全:
// something like this, not tested...
MethodInfo m = GetType().GetProperty("Prop").GetGetMethod();
Func<int> d = (Func<int>)Delegate.CreateDelegate(typeof(Func<int>), m);
是否有直接编译安全的方式创建一个属性获取方法的委托,类似于创建在顶部有一个正常的方法的委托的任何方式,而无需使用中间的lambda方法?
什么是与拉姆达回事? – 2010-04-12 11:33:11
这是一个额外的不必要的方法,并且使事情比所需要的更复杂,因为属性获得者已经与代理签名匹配 – thecoop 2010-04-12 11:52:16
我在这里看不到你的观点:lambda不是类方法,而是实例化委托的一种方法。 Func d =()=> Prop表示我希望我的委托d“指向”访问者 –
2010-04-12 12:19:35