Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 您能否定义一个接口,使实现它的类必须包含一个也属于该类的成员?_C#_.net_Oop_Inheritance - Fatal编程技术网

C# 您能否定义一个接口,使实现它的类必须包含一个也属于该类的成员?

C# 您能否定义一个接口,使实现它的类必须包含一个也属于该类的成员?,c#,.net,oop,inheritance,C#,.net,Oop,Inheritance,本质上,我想做的是实现一个类,该类可以包含对相同类型实例的引用列表。如下所示: interface IAccessibilityFeature { List<IAccessibilityFeature> Settings { get; set; } } class MyAccess : IAccessibilityFeature { List<MyAccess> Settings { get; set; } } 接口IAccessibilityFeat

本质上,我想做的是实现一个类,该类可以包含对相同类型实例的引用列表。如下所示:

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

class MyAccess : IAccessibilityFeature
{
    List<MyAccess> Settings { get; set; }
}
接口IAccessibilityFeature
{
列表设置{get;set;}
}
类MyAccess:IAccessibilityFeature
{
列表设置{get;set;}
}

我知道这不会编译,因为接口明确指出我的
设置
必须是
列表
类型。我想要的是一些关于如何正确实现我在
MyAccess
课程中所要做的事情的指导。

这可以通过以下方法实现:

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

class MyAccess : IAccessibilityFeature<MyAccess>
{
    List<MyAccess> Settings { get; set; }
}
接口IAccessibilityFeature
{
列表设置{get;set;}
}
类MyAccess:IAccessibilityFeature
{
列表设置{get;set;}
}
试试这个:

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

class MyAccess : IAccessibilityFeature<MyAccess>
{
    List<MyAccess> Settings { get; set; }
}
接口IAccessibilityFeature,其中T:IAccessibilityFeature
{
列表设置{get;set;}
}
类MyAccess:IAccessibilityFeature
{
列表设置{get;set;}
}

看看Cheers Tom,有趣的阅读:)请注意,当前可见的答案实际上都不要求实现类提供自己作为类型参数T。最终由您强制执行严格的要求,类型系统无法为您执行。