我有以下类定义:
public class SessionTreeManager<T>
: DataManager<T> where T : DataItem, IDeletable, IAnotherInterface
我只希望T成为DataItem并实现其他两个接口。编译器似乎认为我希望T成为3中的任何一个并给出构建错误,因为上面的类中我的T并没有实现所有3,并且这个类无法找到要覆盖的方法。
这可能吗?
答案 0 :(得分:5)
如果我正确理解您的问题,您必须执行以下操作:
public class SessionTreeManager<T>
: DataManager<T>, IDeletable, IAnotherInterface
where T : DataItem {}
其中说,SessionTreeManager
扩展/实施DataManager
,IDeletable
和IAnotherInterface
,并且通用约束为DataItem
。
您还可以将扩展设置为DataManager<DataItem>
,如其他评论中所述,但是父方法不会被约束为class T
,而是会被限制为其父DataItem
。这样,SessionTreeManager
及其父类DataManager
的所有方法都将被约束到DataItem
的子类class T
答案 1 :(得分:2)
试试这个
public class SessionTreeManager<T> : DataManager<DataItem>, IDeletable, IAnotherInterface