我有以下类定义:
public class SessionTreeManager<T>
: DataManager<T> where T : DataItem, IDeletable, IAnotherInterface
Run Code Online (Sandbox Code Playgroud)
我只希望T成为DataItem并实现其他两个接口.编译器似乎认为我希望T成为3中的任何一个并给出构建错误,因为上面的类中的T没有实现所有3并且这个类无法找到要覆盖的方法.
这可能吗?
如果我正确理解您的问题,您必须执行以下操作:
public class SessionTreeManager<T>
: DataManager<T>, IDeletable, IAnotherInterface
where T : DataItem {}
Run Code Online (Sandbox Code Playgroud)
其中说,SessionTreeManager
扩展/实现DataManager
,IDeletable
并且IAnotherInterface
通用被限制为DataItem
.
您还可以将extends设置DataManager<DataItem>
为在其他注释中提到,但是父方法不会被约束到class T
,而是将其约束到其父级DataItem
.这样,所有的方法SessionTreeManager
以及它的父类DataManager
将被限制在子类的DataItem
是class T