实现泛型类和多个接口

本文关键字:接口 泛型类 实现 | 更新日期: 2023-09-27 18:35:56

我有以下类定义:

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

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

这可能吗?

实现泛型类和多个接口

如果我

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

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

也就是说,SessionTreeManager扩展/实现DataManagerIDeletableIAnotherInterface,泛型被限制为DataItem

您也可以将扩展设置为DataManager<DataItem>,如其他注释中所述,但随后父方法将不受class T约束,而是受其父DataItem的约束。这样,SessionTreeManager的所有方法及其父类DataManager都将被约束为DataItem子类,这是class T

试试这个

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