这是.NET4中的Vb,但我在C#中遇到了同样的问题。 我们必须使用接口,原因我不会进入。
这样可行,但它不使用接口:
Public class PersonList
Inherits List(of Person)
end class
Dim MyPeople as new PersonList
MyPeople.AddRange(SomeList)
我需要使用IPerson和IPersonList等接口,因为我们使用依赖注入来测试这些类。
当我为PersonList创建一个接口时,我再也看不到AddRange了。
使用界面的新版PersonList
Public class PersonList
Inherits List(IPerson)
Implements IList(Of IPerson)
Implements IPersonList
end class
Interface for the list:
Public Interface IPersonList
Inherits IList(Of IPerson)
end interface
Everthing构建并按预期工作,直到我尝试调用AddRange:
Dim MyPeople as IPersonList = new PersonList
MyPeople.AddRange(SomeList) 'BUILD ERROR AddRange is not a member of IPersonList
据推测,IPersonList
需要从具有AddRange
实现的内容继承。但AddRange
是List(of T)
的一部分,接口无法继承。{/ p>
那么如何让我的列表界面公开AddRange
?
答案 0 :(得分:1)
你可以:
IPersonList
投靠List(Of IPerson)
,然后致电AddRange
。这只有在所有IPersonList实现继承自List(Of IPerson)
时才有效,因此它可能不是最佳选择。AddRange
IList(T)
扩展方法
AddRange