我正在尋找一種動態添加成員到動態對象的方式。 OK,我想是需要澄清一下......動態添加成員到動態對象
當你做到這一點:
dynamic foo = new ExpandoObject();
foo.Bar = 42;
的Bar
屬性將在運行時動態添加。但是代碼仍然將「靜態」引用到Bar(名稱「Bar」是硬編碼的)......如果我想在運行時添加一個屬性而不知道它在編譯時的名稱怎麼辦?
我知道如何用自定義動態對象(其實我blogged about it幾個月前)做到這一點,利用DynamicObject
類的方法,但我怎麼能與任何動態對象做呢?
我大概可以使用IDynamicMetaObjectProvider
接口,但我不明白如何使用它。例如,我應該將什麼論點傳遞給GetMetaObject
方法? (它預計Expression
)
順便說一下,你如何執行對動態對象的反射? 「經常」反思和TypeDescriptor
不顯示動態成員...
任何有識之士將不勝感激!
在C#6.0中,*可以是*你可以像'foo。$ Bar = 42;'一樣寫* :)不知道是否允許動態... – nawfal 2014-07-21 12:25:25
@nawfal,實際上,該功能已被刪除.. 。但無論如何,'foo。$ Bar'只是'foo [「Bar」]的簡寫'' – 2014-07-21 12:26:33
Thomas,不知道被丟棄的功能(我很高興),但是哦,是的,一會兒我忽略了你q的真正需求。 – nawfal 2014-07-21 12:28:46