Код: Выделить всё
public class Customer
{
public string CustomerName { get; set; }
[JsonConverter(typeof(ConcreteConverter))]
public List Orders { get; set; }
}
public class Order : IOrderContract {
public string OrderName { get; set; }
public string OrderType { get; set; }
}
public interface IOrderContract
{
string OrderName { get; set; }
string OrderType { get; set; }
}
Код: Выделить всё
public IActionResult JsonPatchWithoutModelState([FromBody] JsonPatchDocument patchDoc)
{
var customer = CreateCustomer();
patchDoc.ApplyTo(customer);
return new ObjectResult(customer);
}
private Customer CreateCustomer()
{
return new Customer
{
CustomerName = "John",
Orders = new List()
{
new Order
{
OrderName = "Order0"
},
new Order
{
OrderName = "Order1"
}
}
};
}
*
Значение '[ {
"OrderName": "name",
"OrderType": "type" } ]' недопустимо для целевого местоположения.
*
Но когда я использую коллекцию конкретных классов вместо интерфейса:
Код: Выделить всё
public class Customer
{
public string CustomerName { get; set; }
public List Orders { get; set; }
}
Я глубоко углубился в jsonpatchdocument и обнаружил, что невозможно создать экземпляр для интерфейса, что является очевидной ошибкой, т.е.
Не удалось создать экземпляр типа IOrderContract. Тип — это интерфейс
или абстрактный класс, и его экземпляр не может быть создан.
Есть ли какое-либо другое решение для этого добиться преобразования патчей с помощью интерфейсов?
Подробнее здесь: https://stackoverflow.com/questions/612 ... e-collecti
Мобильная версия