У меня есть обернутый список, который выглядит следующим образом:JSON.NET не десериализации обернутого коллекцию
[Serializable]
public class OrderManager : IEnumerable<Order>
{
public OrderManager()
{ }
private List<Order> orders = new List<Order>();
public void AddOrder(Order order)
{
orders.Add(order);
}
public IEnumerator<Order> GetEnumerator()
{
return orders.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return orders.GetEnumerator();
}
}
Я включил экземпляр поля в классе клиента, как это:
[Serializable]
public class Customer
{
public Customer()
{ }
private OrderManager _orders
= new OrderManager();
public OrderManager Orders
{
get { return _orders; }
set { _orders = value; }
}
}
Я создаю Серийный анализатор JSON.NET:
private JsonSerializer GetSerializer()
{
var serializer = new JsonSerializer();
// on or off the type name handling doesn't help
//serializer.TypeNameHandling = TypeNameHandling.All;
var contractResolver = new DefaultContractResolver(true);
contractResolver.IgnoreSerializableAttribute = false;
contractResolver.IgnoreSerializableInterface = false;
serializer.ContractResolver = contractResolver;
serializer.PreserveReferencesHandling = PreserveReferencesHandling.All;
serializer.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
return serializer;
}
Сериализация объекта клиента работает, но во время десериализации я получаю сообщение об ошибке :
Error setting value to '_orders' on 'Tests.SerializationTests+Customer'.
С TypeNameHandling установлен Все, что я получаю это:
Type specified in JSON 'Tests.SerializationTests+Order[], Tests, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' is not compatible with 'Tests.SerializationTests+OrderManager, Tests, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Path '_orders.$type', line 1, position 232.
Любую идею, как получить Json.NET играть хорошо с обернутым списком?
А-Ха! В этом есть смысл! Мне нужна моя логика для Add, и просто верните false внутри remove, так как я не хочу поддерживать удаление. Прекрасно работает! Благодаря! – mbursill