2010-01-27 17 views
3

我們需要實現一些通用對象結構,就像動態語言中的一個對象一樣,這將使我們有可能創建整個對象圖形,飛。這個類必須是可序列化的,並且用戶友好的。通用對象結構(屬性包)的實現

到目前爲止,我們已經用Dictionary<string, object>中的類派生了一些實驗,使用點符號路徑在對象樹中存儲屬性和集合。我們也發現一個實現類似的article,但它似乎並不完全適合我們的圖片。

你知道一些處理類似問題的好的實現/庫,或者你有什麼(不重要的)想法可以幫助我們實現自己嗎?另外,我可能不得不說我們正在使用.NET 3.5,所以我們不能利用.NET 4.0中的新特性,比如動態類型等等(據我所知,它也不可能在.NET 3.5解決方案中使用它的任何子集)。

回答

2

我已經做了財產包的實現,在過去,包括所有喜歡ICustomTypeDescriptor/ITypedList得到它結合渣土 - 它可以是一個很多工作。特別是如果你包含序列化(不包括BinaryFormatter,它有自己的問題)。

這種類型的動態對象的不真的適合在一般靜態類型語言如C#非常好,但它可以進行工作。雖然我不是他們最偉大的粉絲(甚至沒有一點),但是你能否在這裏使用DataTable/DataRow?它會按照你的要求進行,而不需要很多工時的開發/調試。

3

一個很容易動態添加屬性(以分層方式)和序列化的類是XDocument

你不會得到很容易,除非你遷移到.NET 4

我特別喜歡,他們已經增加顯式的轉換運營商的方式來使用:

XElement address = d.Element("Address"); 
int number = (int)address.Attribute("Number"); 
0

看一看在這個CodeProject文章中,該文章解釋瞭如何設置一個屬性包,以便與屬性網格here以及here一起使用。我用這些,因爲你的問題與房產包有關。

希望這會有所幫助, 最好的問候, 湯姆。

+0

第二個和我發佈的一樣。但我會檢查第一個,謝謝;) –