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.OData
和System.Web.OData
(它们是在安装包时包含的)。
在这个类中,我首先使用了一个名称空间,然后使用了另一个。但我还是犯了错误。
有变通办法吗?
引用没有问题,只是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);
}