2010-07-12 60 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,仅供参考。

如果字典中的值始终可序列化,那么您最好使用可序列化的字典。如果它们不是,那就没有真正的解决方案 - 如果你无法控制字典中的内容,你不能保证你能够序列化它。

如果您事先知道可能的类型,但无法将它们更改为可序列化,那么您可以为每种类型创建格式化程序对象,然后使用查找为每个类型中的每个值查找正确的格式化对象字典。