我試圖建立類似動態的C#類型initalizer:C#動態類型初始化
MyClass class = new MyClass { MyStringProperty= inputString };
我想建立一個反映在給定類型而返回它創建了一個新的委託泛型方法類的實例並根據輸入參數填充它。該方法的簽名可能是這樣的:
Func<string,T> CreateFunc<T>();
並調用結果函數將創建「T」的新實例(例如)每輛公共屬性類型爲String的到輸入字符串參數的值。
所以假設「MyClass的」只有MyStringProperty,下面的代碼會在一開始的功能等效於代碼:
var func = CreateFunc<MyClass>();
func.Invoke(inputString);
我很熟悉的System.Reflection和System.Linq的。表達式名稱空間,過去我做了一些中等複雜的事情,但是這個讓我很難過。我想要構建一個編譯的委託,而不是簡單地使用反射遍歷屬性。
謝謝!
看起來你還在使用反射,你只是(本質上)緩存反射的結果。 – Randolpho 2010-02-19 21:16:29
很酷,我忘了有關於屬性初始化的表達式節點類型,並且假定需要幾個單獨的語句。@Randolpho,是的,這就是我在對你的回答的評論中試圖解釋的。 – 2010-02-19 22:49:29
是的,我沒有意識到初始化器存在,只是假設我必須自己創建。當我寫這個問題時,這比我想象的要簡單。 – Paul 2010-02-20 01:06:22