Fre*_*III 2 c# json.net converters
我的 ViewModel 中有一个用于DateTimeOffset属性的自定义 JsonConverter。我有 100 多个 ViewModel。
public class ItemViewModel
{
public string Name { get; set; }
[JsonConverter(typeof(CustomDateTimeOffsetConverter))]
public DateTimeOffset DateCreated { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如何将此属性应用于所有 DateTimeOffset 属性,而不将其添加到我的所有 ViewModel 中?
当我阅读此答案时,我以为我已经找到了解决方案,但是当我应用它时,CustomResolver 仅在父对象本身上触发,而不是在 DateTimeOffset 属性或任何属性上触发。
public class CustomResolver : DefaultContractResolver
{
protected override JsonObjectContract CreateObjectContract(Type objectType)
{
JsonObjectContract contract = base.CreateObjectContract(objectType);
if (objectType == typeof(DateTimeOffset))
{
contract.Converter = new CustomDateTimeOffsetConverter();
}
return contract;
}
}
Run Code Online (Sandbox Code Playgroud)
回顾一下,我已经完成了其他所有工作。如果我手动添加该[JsonConverter(typeof(CustomDateTimeOffsetConverter))]属性,那么我的应用程序就会像魅力一样工作。我只是问如何自动添加属性,而不是手动添加。
您需要将转换器添加到JsonSerializerSettings.Converters传递给序列化器的内容中。
您的JsonSerializerSettings意愿如下:
var settings = new JsonSerializerSettings()
{
Converters =
{
new CustomDateTimeOffsetConverter()
}
};
Run Code Online (Sandbox Code Playgroud)
您的自定义转换器还应该宣传它可以DateTimeOffset使用以下JsonConverter方法重写来转换类型:
public override bool CanConvert(Type objectType)
{
return (objectType == typeof(DateTimeOffset));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2508 次 |
| 最近记录: |