以自定义方式序列化接口对象

时间:2018-06-19 01:23:57

标签: c# serialization json.net

给定:接口A,它有自定义序列化器,它将类型注入到最终的JSON中。 A1类也有一个序列化器,但只发出忽略自身类型的属性。

[JsonConverter(typeof(InterfaceAConverter))]
interface A {
}



[JsonConverter(typeof(A1Converter))]
class A1: A {
   // Some properties here
}

尝试序列化作为接口显示的变量时:

A a = new A1();

JsonConvert.SerializeObject(a, typeof(A))

忽略接口A上的转换器并直接进入A1转换器。

反向转换器似乎正常工作:

JsonConvert.DeserializeObject<A>(json);

问题是 - 如何强制使用JsonConvert.SerializeObject来使用特定的转换器?如果我从A1类中删除了Converter - 它正确调用了接口序列化程序,但如果我尝试直接序列化A1类,它就不起作用。

0 个答案:

没有答案