如何在包含接口类型集合的类上应用JSON修补程序文档

时间:2020-04-17 12:34:07

标签: json patch webapi json-patch

我有以下代码:

public class Customer
    {
        public string CustomerName { get; set; }

        [JsonConverter(typeof(ConcreteConverter<Order>))]
        public List<IOrderContract> 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<Customer> patchDoc)
        {
            var customer = CreateCustomer();

            patchDoc.ApplyTo(customer);

            return new ObjectResult(customer);
        }



private Customer CreateCustomer()
        {
            return new Customer
            {
                CustomerName = "John",
                Orders = new List<IOrderContract>()
                {
                    new Order
                    {
                        OrderName = "Order0"
                    },
                    new Order
                    {
                        OrderName = "Order1"
                    }
                }
            };
        }

它抛出异常 *

值'[{ “ OrderName”:“名称”, “ OrderType”:“ type”}]'对于目标位置无效。

*

但是当我使用如下的具体类集合而不是接口时:

public class Customer
        {
            public string CustomerName { get; set; }    

            public List<Order> Orders { get; set; }      
        }

然后正常工作。 我深入研究了jsonpatchdocument,发现它无法为接口创建实例,这是明显的错误,即

无法创建IOrderContract类型的实例。类型是接口 或抽象类,并且无法实例化。

还有其他解决方案可以通过接口实现补丁转换吗?

0 个答案:

没有答案
相关问题