我有2种共享接口的类型...我正在尝试 serialize ,而不是DeSerialize,这是基于JSON的Internallclass实例外部频道的模式
interface iShared {
public string ID {get; set;}
public string Name {get; set;}
}
public class InternalClass : iShared {
[JsonProperty("id")]
public string ID {get; set;}
[JsonProperty("name")]
public string Name {get;set;}
public int Age {get; set;}
}
public class ExertnalClass : iShared {
[JsonProperty("externalId")]
public string ID {get; set;}
[JsonProperty("name")]
public string Name {get;set;}
public string Description {get; set;}
}
例如。对于InternalClass的实例:
new InternalClass {ID = "abc", Name = "myName", Age = 30 }
而不是:
{"id": "abc", "name": "myName", "age": 30}
序列化为
{"externalId": "abc", name: "myName", description: null}
鉴于此对象层次结构,这本身不可能。我看到了两种快速的方法:
a)序列化为界面,应为外部类,作为外部类重新批准:这应该添加具有其默认值的额外属性。
b)如果您可以编辑类别,请使用干净的方式:创建一个(显式)转换操作员或ToExternalClass()
方法,并通过手动(或反射)复制其中的值。构造函数ExternalClass(IShared cloneThis)
可能会有助于避免额外的工作,如果您将来扩展了这些类别。