2

这是 .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

在我尝试调用 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),接口不能从其继承。

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

4

1 回答 1

1

你可以:

  1. 投射IPersonListList(Of IPerson),然后调用AddRange。这仅在所有 IPersonList 实现都继承自 时才有效List(Of IPerson),因此它可能不是最佳选择。
  2. AddRange_IList(T)
  3. 使用循环而不是AddRange
于 2013-03-01T14:46:42.730 回答