2014-04-08 65 views
3

我正在處理的項目將大量來自後端源的數據拖入各種集合(字典,可觀察集合等)。爲了使這些數據更易於訪問,我們將這些收集項目公開爲屬性。從集合中自動創建屬性

這會創建大量的樣板代碼來將這些屬性映射到它們的後端字段。我看過AutoMapper,看起來它可能是解決方案的一部分......但它聽起來像仍然需要手動創建屬性列表。

我最想要的是將集合項目作爲屬性公開的一種通用方法。 (所有的收集項目都是強類型的,並且必須具有什麼樣的屬性名稱作爲它們的關鍵)。

感謝您的幫助。

更新:對於那些尋找的代碼eexample:

Dictionary<string,Foo> myDictionary; 
myDictionary.Add("MyPropertyName",new Foo()); 

我想基本上做到:

myDictionary.MyPropertyName 

詞典中訪問相應的值。

+0

您可能可以使用反射,請參閱http://msdn.microsoft.com/en-us/library/system.type.getproperties(v=vs.110).aspx – reggaeguitar

+0

您可能需要查看http ://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject%28v=vs.110%29.aspx – Dtex

+0

只是爲了確保我遵循 - 你知道設計時的一組鍵,並希望將相關的項目公開爲強類型的設計時間屬性? – decPL

回答

1

而不是具有單獨的屬性,使用索引屬性和字符串作爲每個屬性的名稱更有意義,內部類將字符串映射到某個後端源。

通常,您會從DynamicObject中派生出您的類型,該類型爲此行爲提供了模板。

在C#即將發佈的版本(你可以得到羅斯林預覽版或源代碼),他們已經推出了新的語法來啓用「動態」特性查找,使用語法x.$propertyName,這將擴大至x["propertyName"]

+0

其實......如果這就是你想要的......考慮使用T4代碼gen。 – Aron