Я только что обновил мою версию NewtonSoft JSON.NET с версии 3.0.0 до 3.5.0, и я заметил, что защищенные члены неявно сериализованы.Обновление NewtonSoft JSON.NET неявно сериализации защищенных членов
У меня есть следующий класс:
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");
как путь и имя свойства равны нулю, если я или не сделать свойство устанавливает государственные или добавлять обновления класс, имеющий следующие атрибуты:
[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;
}
}
Это разумно размер проект, который много использует процесс сериализации, я не хочу проходить через код, добавляя эти атрибуты каждому классу и члену.
Есть ли способ обойти это?
Эти настройки также сериализуют поля. Не только свойства. – Kugel