背景:我有一个DirectoryCollection<T>
类型的泛型集合,并指定T必须是IEntity
类型。我有一个具体类型Entity
,它实现IEntity
和两个派生类型,Employee
和Station
。
在.NET 4.0中,我知道可以(from here)调用IEnumerable<Entity>
参数作为DirectoryCollection<Employee>
的方法,但是,似乎这对方法不起作用参数类型为ICollection<Entity>
。在所述方法中,我使用集合的Remove
和Add
方法,因此,犹豫是否将IEnumerable
放入方法签名中。
解决此问题的最佳做法是什么?
答案 0 :(得分:0)
您需要在ICollection
课程中实施DirectoryCollection
。由于@SamHolder在评论中提到的协方差限制,您可能需要明确地实现它。有关明确实现接口的信息,请参阅this tutorial。
此外,在接受ICollection<Entity>
作为参数的方法中,您可能需要更改签名以接受ICollection<IEntity>
。