【问题标题】:Can you define an interface such that a class that implements it must contain a member that is also of that class?你能定义一个接口,使得实现它的类必须包含一个也是该类的成员吗?
【发布时间】:2012-02-23 18:30:42
【问题描述】:

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

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

class MyAccess : IAccessibilityFeature
{
    List<MyAccess> Settings { get; set; }
}

我知道这不会编译,因为接口明确指出我的Settings 必须是List&lt;IAccessibilityFeature&gt; 类型。我所追求的是一些关于在MyAccess 类中实现我想要做的事情的正确方法的指导。

【问题讨论】:

  • 干杯汤姆,有趣的阅读:)
  • 请注意,当前可见的答案实际上都要求实现类提供自身作为类型参数T。这最终取决于你为了强制执行严格的要求,类型系统无法为您执行此操作。

标签: c# .net oop inheritance


【解决方案1】:

试试这个:

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

class MyAccess : IAccessibilityFeature<MyAccess>
{
    List<MyAccess> Settings { get; set; }
}

【讨论】:

    【解决方案2】:

    这可以通过:

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

    【讨论】:

      猜你喜欢
      • 2018-07-09
      • 2016-10-20
      • 2017-10-13
      • 2017-03-13
      • 2022-08-17
      • 1970-01-01
      • 1970-01-01
      • 2020-08-25
      • 1970-01-01
      相关资源
      最近更新 更多