我正在写一个日志框架,需要序列化IDictionary<string,object>中的每个对象。对象可以是一个简单的字符串,int等,也可以是一个复杂的业务对象或两者的集合。因此,我需要一个灵活的方法来做这件事。在更复杂的情况下,我希望输出如下所示:对象= IList<Person>
IDictionary<string,object>
IList<Person>
我不需要处理嵌套到包含集合的对象的级别。有人能给我指一下正确的方向吗?
iecba09b1#
请在SO上查看此question的答案,以帮助您入门。
基本上,在.NET中没有内置的机制来实现这一点--然而,您可以查看Web上的一些objectDump code,like 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
dtcbnfnu2#
Here is an implementation of a serializable dictionary,以供参考。如果字典中的值总是可序列化的,那么你最好使用可序列化的字典;如果它们不是,那么就没有真正好的解决方案--如果你不能控制进入字典的内容,你就不能保证你能够序列化它。如果您事先知道可能的类型,但无法将它们更改为可序列化的,那么您也许可以为每种类型创建格式化程序对象,然后使用查找为字典中的每个值找到正确的格式化对象。
2条答案
按热度按时间iecba09b1#
请在SO上查看此question的答案,以帮助您入门。
基本上,在.NET中没有内置的机制来实现这一点--然而,您可以查看Web上的一些objectDump code,like 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
dtcbnfnu2#
Here is an implementation of a serializable dictionary,以供参考。
如果字典中的值总是可序列化的,那么你最好使用可序列化的字典;如果它们不是,那么就没有真正好的解决方案--如果你不能控制进入字典的内容,你就不能保证你能够序列化它。
如果您事先知道可能的类型,但无法将它们更改为可序列化的,那么您也许可以为每种类型创建格式化程序对象,然后使用查找为字典中的每个值找到正确的格式化对象。