我刚刚将我的 NewtonSoft JSON.NET 版本从 3.0.0 更新到 3.5.0,我注意到受保护的成员没有被隐式序列化。
我有以下课程:
public class SimpleFileContainer : IDto
{
public virtual string Name { get; protected set; }
public virtual string Path { get; protected set; }
public SimpleFileContainer(string name, string path)
{
Name = name;
Path = path;
}
}
以下测试代码不通过
var json = JsonConvert.SerializeObject(new SimpleFileContainer("Name", "Path"));
var deserialised = JsonConvert.DeserializeObject<SimpleFileContainer >(json);
Assert.That(deserialised.Name, Is.EqualTo("Name");
Name 和 Path 属性都为 null,除非我将属性集公开或添加更新具有以下属性的类:
[JsonObject(MemberSerialization.OptOut)]
public class SimpleFileContainer : IDto
{
[JsonProperty]
public virtual string Name { get; protected set; }
[JsonProperty]
public virtual string Path { get; protected set; }
public SimpleFileContainer(string name, string path)
{
Name = name;
Path = path;
}
}
这是一个规模合理的项目,它大量使用了序列化过程,我不想通过将这些属性添加到每个类和成员的代码。
有办法解决这个问题吗?