实现泛型类和多个接口

时间:2014-12-31 10:03:09

标签: c# syntax

我有以下类定义:

public class SessionTreeManager<T> 
    : DataManager<T> where T : DataItem, IDeletable, IAnotherInterface

我只希望T成为DataItem并实现其他两个接口。编译器似乎认为我希望T成为3中的任何一个并给出构建错误,因为上面的类中我的T并没有实现所有3,并且这个类无法找到要覆盖的方法。

这可能吗?

2 个答案:

答案 0 :(得分:5)

如果我正确理解您的问题,您必须执行以下操作:

public class SessionTreeManager<T> 
    : DataManager<T>, IDeletable, IAnotherInterface 
    where T : DataItem {}

其中说,SessionTreeManager扩展/实施DataManagerIDeletableIAnotherInterface,并且通用约束为DataItem

您还可以将扩展设置为DataManager<DataItem>,如其他评论中所述,但是父方法不会被约束为class T,而是会被限制为其父DataItem 。这样,SessionTreeManager及其父类DataManager的所有方法都将被约束到DataItem的子类class T

答案 1 :(得分:2)

试试这个

public class SessionTreeManager<T> : DataManager<DataItem>, IDeletable, IAnotherInterface