2010-07-12 56 views
0

我正在寫日誌框架,並需要序列化每個對象在IDictionary<string,object>。對象可以是簡單的字符串,int等或複雜的業務對象或任何一個集合。因此,我需要一個靈活的方法來做到這一點。序列化對象的IDictionary

在事物的更復雜年底想我的輸出是這樣的:

對象= IList<Person>

  1. 列表的人:
    • 人:
      • 產品名稱:David Neale
      • 性別:男
    • 人:
      • 名稱:約翰史密斯
      • 性別:

我並不需要處理嵌套對象包含水平一個包含集合的集合。

有人可以指出我正確的方向嗎?

+0

我敢肯定,這已被回答的地方.... – Aren 2010-07-12 20:33:13

回答

1

看看這個SO的question的答案,讓你開始。

基本上,在.NET中沒有內置的機制 - 但是,您可以查看網絡上的objectDump codelike this

FYI:顯然,ObjectDumper碼是什麼,是VS C#示例的一部分(見Eric White's blog):

您可以找到 CSharpSamples.zip文件是安裝 與Visual Studio對象自卸車2008年

C:\ Program Files文件\微軟的Visual Studio的 9.0 \樣本\ 1033 \ CSharpSamples.zip

1

Here is an implementation of a serializable dictionary,僅供參考。

如果字典中的值始終可序列化,那麼您最好使用可序列化的字典。如果它們不是,那就沒有真正的解決方案 - 如果你無法控制字典中的內容,你不能保證你能夠序列化它。

如果您事先知道可能的類型,但無法將它們更改爲可序列化,那麼您可以爲每種類型創建格式化程序對象,然後使用查找爲每個類型中的每個值查找正確的格式化對象字典。