您是否可以定义一个接口,以便实现它的类必须包含同样属于该类的成员?

Iai*_*ser 6 .net c# oop inheritance

基本上我想要做的是实现一个类,它可以包含对同一类型实例的引用列表.类似于以下内容:

interface IAccessibilityFeature
{
    List<IAccessibilityFeature> Settings { get; set; }
}

class MyAccess : IAccessibilityFeature
{
    List<MyAccess> Settings { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我知道这不会编译,因为接口明确地说我Settings必须是类型List<IAccessibilityFeature>.我所追求的是关于正确实现我在MyAccess课堂上所做的事情的正确方法的一些指导.

ja7*_*a72 14

试试这个:

interface IAccessibilityFeature<T> where T : IAccessibilityFeature<T>
{
    List<T> Settings { get; set; }
}

class MyAccess : IAccessibilityFeature<MyAccess>
{
    List<MyAccess> Settings { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

  • +1 - 与通用约束的良好接触. (3认同)