我注意到,使用 DataContractJsonSerializer 时,序列化的 JSON 字符串有时包含以下形式的类型信息
{"__type":"MyClass:#MyNamespace", ... }
根据我的观察,它似乎只在序列化基类型但序列化 时才这样做。已知 sub 类型被传递,这是有道理的,但我还没有找到任何官方文档来确认这一点,或者确实无论如何强制序列化程序在遇到自定义类型时始终表现出这种行为。
谁能确认我的观察是否正确?更好的是,如果您知道一种方法来指示序列化程序始终序列化自定义类型的类型信息,是否可能?
谢谢,
最佳答案
实际上,您可以强制序列化程序始终一致地发出 __type 信息。
如果您独立使用序列化程序,请使用 constructor overload
这需要“alwaysEmitTypeInformation”参数。传入真。
如果您使用的是 DataContractJsonSerializerOperationBehavior,请将该属性的相同属性设置为 true。我相信你也可以通过配置来做到这一点。
最后,请参阅 http://msdn.microsoft.com/en-us/library/bb412170.aspx 处的“何时发出类型提示”部分。以获得更详细的解释。
希望这可以帮助!
关于.net - DataContractJsonSerializer 何时包含类型信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4887485/