无法在带有接口的列表上使用AddRange

时间:2013-03-01 14:30:51

标签: vb.net list

这是.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实现的内容继承。但AddRangeList(of T)的一部分,接口无法继承。{/ p>

那么如何让我的列表界面公开AddRange

1 个答案:

答案 0 :(得分:1)

你可以:

  1. IPersonList投靠List(Of IPerson),然后致电AddRange。这只有在所有IPersonList实现继承自List(Of IPerson)时才有效,因此它可能不是最佳选择。
  2. AddRange
  3. 创建IList(T)扩展方法
  4. 使用循环代替AddRange