委託要創建一個委託從一個方法,你可以使用編譯類型安全的語法:創建一個從屬性的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