首页 > 解决方案 > 是否可以复制 JsonObjectAttribute 的行为?

问题描述

我正在尝试从另一个实现 IEnumerable 的包中序列化/反序列化一个类,但还包含我希望包含在序列化流中的其他属性。

public class MyList<T> : IList<T>
{
    private List<T> _list;
    public Foo Bar { get; set; }

    // IList implementation ...
}

如果我将[JsonObject]属性应用于类,并使用自定义ContractResolver序列化私有字段,一切正常。正如我之前所说,该类属于另一个包,因此我无法将该属性应用于该类。

我注意到文档中的以下代码。

public class ConverterContractResolver : DefaultContractResolver
{
    public new static readonly ConverterContractResolver Instance = new ConverterContractResolver();

    protected override JsonContract CreateContract(Type objectType)
    {
        JsonContract contract = base.CreateContract(objectType);

        // this will only be called once and then cached
        if (objectType == typeof(DateTime) || objectType == typeof(DateTimeOffset))
        {
            contract.Converter = new JavaScriptDateTimeConverter();
        }

        return contract;
    }
}

由于我已经在使用自定义ContractResolver来序列化/反序列化私有字段,我是否可以简单地重新编写if子句以使用与Converter应用时相同的子句JsonObjectAttribute

标签: c#serializationjson.netdeserialization

解决方案


推荐阅读