OData 使用 ICollection<ITax> 转换为强类型

OData using ICollection<ITax> convert to strong type

我正在使用 OData 制作一个 post,但我需要传递一个强类型对象, 在我的主 class 中,我有这个 属性 包含接口集合

public ICollection<ITax> Taxes { get; set; }

正如我们在这里看到的那样,每个接口都由一种税种实现。

    public sealed class Tax1 : ITax
    {
        public decimal BaseTotalAmount { get; set; }

        public decimal TotalAmount { get; set; }
    }

    public sealed class Tax2 : ITax
    {
        public decimal BaseTotalAmount { get; set; }

        public decimal TotalAmount { get; set; }
    }

我没有通过 JSON 解决的问题是确定每种税种。

"Taxes": [
        {
            "BaseTotalAmount": 1.0,
            "TotalAmount": 1.0
        }
    ]

如何在 json 中设置一个字段来标识我的对象是 Tax1 类型?

有一个简单的方法,可能对您没有帮助,但由于您没有提供太多上下文,所以我可以提供给您。

您只需要一个 Tax class 和另外一个 enum。假设 TaxType.

public ICollection<Tax> Taxes { get; set; }

public enum TaxType
{
    TaxType1 = 0,
    TaxType2 = 1
}

public sealed class Tax : ITax
{
    public TaxType Type { get; set; }

    public decimal BaseTotalAmount { get; set; }

    public decimal TotalAmount { get; set; }
}

希望对您有所帮助