.net 序列化对象的IDictionary

zfciruhq  于 2023-01-10  发布在  .NET
关注(0)|答案(2)|浏览(115)

我正在写一个日志框架,需要序列化IDictionary<string,object>中的每个对象。对象可以是一个简单的字符串,int等,也可以是一个复杂的业务对象或两者的集合。因此,我需要一个灵活的方法来做这件事。
在更复杂的情况下,我希望输出如下所示:
对象= IList<Person>

  • 人员名单:
  • 人物:
  • 姓名:大卫·尼尔
  • 性别:男
  • 人物:
  • 姓名:约翰·史密斯
  • 性别:男

我不需要处理嵌套到包含集合的对象的级别。
有人能给我指一下正确的方向吗?

iecba09b

iecba09b1#

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

基本上,在.NET中没有内置的机制来实现这一点--然而,您可以查看Web上的一些objectDump codelike this
仅供参考:显然ObjectDumper代码是VS C#示例的一部分(请参见Eric White's blog):
可以在CSharpSamples.zip随Visual Studio 2008一起安装的www.example.com文件中找到对象转储程序。
C:\程序文件\Microsoft Visual Studio 9.0\示例\1033\CSharpSamples.zip

dtcbnfnu

dtcbnfnu2#

Here is an implementation of a serializable dictionary,以供参考。
如果字典中的值总是可序列化的,那么你最好使用可序列化的字典;如果它们不是,那么就没有真正好的解决方案--如果你不能控制进入字典的内容,你就不能保证你能够序列化它。
如果您事先知道可能的类型,但无法将它们更改为可序列化的,那么您也许可以为每种类型创建格式化程序对象,然后使用查找为字典中的每个值找到正确的格式化对象。

相关问题