OData';s增量和类型参数

本文关键字:类型参数 OData | 更新日期: 2023-09-27 18:28:40

我使用的是最新的OData软件包。

我有一个抽象类:

public abstract class EntityODataController<TEntity, TDto> : BaseODataController
{
    public EntityODataController(ILogService logService) : base(logService) { }
    [HttpGet]
    public abstract IHttpActionResult Get(int id);
    [AcceptVerbs("PATCH", "MERGE")]
    public abstract Task<IHttpActionResult> Update([FromODataUri] int id, Delta<TDto> delta, CancellationToken ct);
}

当我编译时,我得到以下错误:

类型"TDto"必须是引用类型,才能将其用作泛型类型或方法"System.Web.Http.OData.Delta"中的参数"TEntityType"

我在项目中引用了System.Web.Http.ODataSystem.Web.OData(它们是在安装包时包含的)。

在这个类中,我首先使用了一个名称空间,然后使用了另一个。但我还是犯了错误。

有变通办法吗?

OData';s增量和类型参数

引用没有问题,只是TDto可以是任何类型。您需要向TDto添加泛型类型限制,将其限制为引用类型。

public abstract class EntityODataController<TEntity, TDto> : ODataController where TDto : class
{
    public EntityODataController(ILogService logService) : base(logService) { }
    [HttpGet]
    public abstract IHttpActionResult Get(int id);
    [AcceptVerbs("PATCH", "MERGE")]
    public abstract Task<IHttpActionResult> Update([FromODataUri] int id, Delta<TDto> delta, CancellationToken ct);
}