Хорошо, у меня есть базовая настройка класса ...
public class Location
{
public string Name{ get; set; }
private LocationList _LocationList = new LocationList();
public LocationList Locations{ get{ return _LocationList; } }
}
public class LocationList : List<Location>{}
public class ViewModel
{
private LocationList _LocationList = new LocationList();
public LocationList Locations{ get{ return _LocationList; } }
}
, которую я хочу использовать с сериализатором JSON Newtonsoft.Однако сериализатор не вставляет элементы в существующую коллекцию за средством доступа к свойствам, доступным только для чтения, а скорее пытается присвоить свойству совершенно новый List, что, конечно же, невозможно, поскольку в нем нет установщика.
Теперь я мог бы просто переключиться на это ...
public class Location
{
public string Name{ get; set; }
public LocationList Locations{ get; set; }
}
public class LocationList : List<Location>{}
public class ViewModel
{
public LocationList RootLocations{ get; set; }
}
Но теперь свойство списка не доступно только для чтения и может быть установлено на ноль.Даже если мы сделаем установщик закрытым, десериализация JSON все равно может установить его на ноль.
Мне нужен способ сказать сериализатору: «Возьмите элементы, которые есть в вашем списке, и вставьте их в этот уже существующий».list "вместо того, чтобы говорить" Замените мой список вашим полностью ".
Так можно ли это сделать, или мне придется написать свой собственный преобразователь сериализации JSON и подключить его?
M