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"?
您的接口要求实现类提供类型的属性,而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)