【发布时间】:2020-10-29 05:31:27
【问题描述】:
我需要 Asp.net 用特定的派生类反序列化对象的属性。
根据 Newtonsoft 的文档,我应该能够更改基类 Equipment.Shared.Model.SimCard 的 JsonContract。 https://www.newtonsoft.com/json/help/html/ContractResolver.htm
Class Transmitter 有一个属性 (Simcard)Equipment.Shared.Model.SimCard,但我需要将它反序列化为 TlsModel.SimCard,否则 TlsModel .SimCard 属性在反序列化期间被丢弃。
public class TlsModelContractResolver : DefaultContractResolver
{
protected override JsonContract CreateContract(Type objectType)
{
JsonContract contract = base.CreateContract(objectType);
if (objectType == typeof(Equipment.Shared.Model.SimCard) )
{
contract.CreatedType = typeof(SimCard);
Console.WriteLine("Simcard CreateType is updated");
}
return contract;
}
}
在第一次反序列化时,我有日志行'Simcard CreateType is updated',所以我的合约反序列化器被考虑在内。
但transmitter.SimCard 仍然是一个Equipment.Shared.Model.SimCard,而不是我预期的TlsModel.SimCard。
我错过了什么吗?
【问题讨论】:
标签: c# asp.net json json.net deserialization