2011-07-14 150 views
16

我可能想得太多,但我的情況是添加屬性的動態對象.NET

public dynamic CreateConfigObject(JobConfigurationModel config) { 
    dynamic configObject = new { }; 

    configObject.Git = new GitCheckout { 
     Repository = config.Github.Url 
    }; 

    return configObject; 
} 

當然,它不能在configObject.Git因爲這個屬性不存在。我希望能夠在運行時添加任意數量的屬性,而無需事先了解屬性的數量和名稱;

這樣的情況在C#中是可能的,還是我的JavaScript想象力開始傷害我? :)

+0

可能重複http://stackoverflow.com/questions/947241/how-do-i-create-dynamic-properties-in-c) – nawfal

回答

34

dynamic允許對強類型對象進行鬆散類型訪問。

您應該使用ExpandoObject類,它允許自由類型的訪問內部字典:

dynamic configObject = new ExpandoObject(); 

configObject.Git = new GitCheckout { 
    Repository = config.Github.Url 
}; 
的[?如何創建在C#中的動態特性(
+0

簡直太棒了:) –

+2

ExpandoObject,現在我最喜歡的.NET對象:) –

+11

不要過度使用'ExpandoObject'。除非你真的需要,否則不要放棄編譯時類型安全。 – SLaks