我正在使用最新的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
(在安装软件包时已包含它们)。
在课堂上,我首先使用了一个命名空间,然后是另一个。但我仍然得到错误。
有解决方法吗?
答案 0 :(得分:0)
您的引用不存在问题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);
}