我正在编写一个日志框架,需要序列化IDictionary<string,object>
中的每个对象。对象可以是简单的字符串,int等,也可以是复杂的业务对象或其集合。因此,我需要一种灵活的方法来实现这一目标。
在更复杂的事情结束时,我希望输出类似于:
对象= IList<Person>
我不需要处理嵌套到包含包含集合的集合的对象的级别。
有人能指出我正确的方向吗?
答案 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,供参考。
如果字典中的值始终可序列化,那么您最好使用可序列化字典。如果它们不是,那么没有真正好的解决方案 - 如果你无法控制进入字典的内容,你不能保证你能够序列化它。
如果您事先知道可能的类型,但无法将它们更改为可序列化,那么您可以为每种类型创建格式化程序对象,然后使用查找为字典中的每个值查找正确的格式化对象