序列化对象的IDictionary

时间:2010-07-12 20:30:15

标签: c# .net reflection serialization

我正在编写一个日志框架,需要序列化IDictionary<string,object>中的每个对象。对象可以是简单的字符串,int等,也可以是复杂的业务对象或其集合。因此,我需要一种灵活的方法来实现这一目标。

在更复杂的事情结束时,我希望输出类似于:

对象= IList<Person>

  1. 人员名单:
    • 人:
      • 姓名:David Neale
      • 性别:男
    • 人:
      • 姓名:John Smith
      • 性别:男
  2. 我不需要处理嵌套到包含包含集合的集合的对象的级别。

    有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:1)

在SO上查看此question的答案,以帮助您入门。

基本上,.NET中没有内置机制 - 但是,您可以查看网络上的objectDump code部分like this

仅供参考:显然,ObjectDumper代码是VS C#样本的一部分(参见Eric White's blog):

  

你可以在中找到Object Dumper   这是CSharpSamples.zip文件   与Visual Studio 2008一起安装。

     

C:\ Program Files \ Microsoft Visual   工作室   9.0 \样品\ 1033 \ CSharpSamples.zip

答案 1 :(得分:1)

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

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

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