实现与另一个接口属性的IList的接口的类...如何?

Luc*_*ini 2 c# ilist properties interface class

我有两个这样的接口:

public interface IMyInterface1
{
    string prop1 { get; set; }
    string prop2 { get; set; }
}

public interface IMyInterface2
{
    string prop1 { get; set; }
    IList<IMyInterface1> prop2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我已经定义了两个实现接口的类:

public class MyClass1 : IMyInterface1
{
     public string prop1 {get; set;}
     public string prop2 {get; set;}
}

public class MyClass2 : IMyInterface2
{
     public string prop1 {get; set;}
     public IList<MyClass1> prop2 {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

但是当我构建代码时,我有以下错误消息:

'ClassLibrary1.MyClass2'没有实现接口成员'ClassLibrary1.IMyInterface2.prop2'.'ClassLibrary1.MyClass2.prop2'无法实现'ClassLibrary1.IMyInterface2.prop2',因为它没有匹配的返回类型'System.Collections.Generic.IList'

如何在我班上实现IMyInterface2的"IList prop2"?

Ada*_*son 7

您的接口要求实现类提供类型的属性,而IList<IMyInterface1>不是IList<class that implements IMyInterface1>.

IMyInterface2如果你想让它工作,你需要制作通用:

public interface IMyInterface2<T> where T : IMyInterface1
{
    string prop1 { get; set; }
    IList<T> prop2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后MyClass2成为:

public class MyClass2 : IMyInterface2<MyClass1>
{
     public string prop1 {get; set;}
     public IList<MyClass1> prop2 {get; set;}
}
Run Code Online (Sandbox Code Playgroud)