我已经定义了一个通用类,其中t可以是特定接口或接口的集合。
public class BaseResponse<T> where T : IBaseResource, ICollection<T>, new()
但是,当我尝试使用ibaseresource创建基本响应时,我会收到以下错误。
'system.collections.generic.list'不能是 用作通用类型或方法中的类型参数" t" "基础响应"。没有隐含的参考转换 'system.collections.generic.list&lt; .resources.ibaseresource>'to 'perhat.api.resources.ibaseresource'。
我什至也尝试了跟随。
public class BaseResponse<T> where T : IBaseResource, ICollection<IBaseResource>, new()
我定义多个约束的方式是错误的还是在定义多个约束时无法使用相同界面的偶像?如果可以实现,我该如何实现?
编辑 - 为了进一步阐明我期望实现的目标,我正在实施一个REST API,在该API中将通过Baseresponse给出响应。例如,使用单个方法将包括BaseResponse<Entity>
,并且GET将包括BaseResponse<List<Entity>>
如评论中所述,约束不被安排。
不知道实施的目的是什么或它的外观,很难解决这个问题。
也许您可以在两种类型上参数化仿制药:
public class BaseResponse<T, U>
where T : IBaseResource, new()
where U : ICollection<T>
这有点不清楚您想做什么,但是在第一次尝试中,您指定T
必须实现IBaseResource
,并且该集合也应实现IBaseResource
。我认为这不是您想要的。这也是错误消息显示的内容。它表明List<T>
不实现IBaseResource
这是否解决了您的问题?
public class BaseResponse<ICollection<T>> where T : IBaseResource, new()