2012-04-09 2 views
1

배경 : DirectoryCollection<T> 유형의 일반 컬렉션이 있고 T는 IEntity 형식이어야한다고 지정했습니다. 구체적인 유형은 Entity이며, IEntity과 두 개의 파생 유형 인 EmployeeStation을 구현합니다. .NET 4.0기본 개체의 ICollection을 수락하는 방법에 상속 된 개체 컬렉션 전달

나는 그러나, 그 유형 ICollection<Entity>의 매개 변수를 사용하는 방법에 대한 작동하지 않는 것, DirectoryCollection<Employee> 같은 IEnumerable<Entity> 매개 변수와 메소드를 호출 (from here) 가능하다는 것을 알고있다. 이 방법에서는 RemoveAdd 컬렉션을 사용하므로 IEnumerable을 메서드 서명에 사용하는 것을 주저합니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

+0

'DirectoryCollection'은 (는)'ICollection'을 구현합니까? 나는 추측하고 있지 않습니까? –

+0

@ChrisShain은'ICollection'이 아니지만'ICollection 여기서 T : IEntity' –

+0

@MichaelKingsmill을 구현하면 ICollection 여기서 T : IEntity'는 T가 입출력 유형이 될 수 없습니다. .? –

답변

0

DirectoryCollection 클래스에 ICollection을 구현해야합니다. @SamHolder가 주석에 언급 한 공분산 제한 때문에 명시 적으로 구현해야 할 수도 있습니다. 인터페이스를 명시 적으로 구현하려면 this tutorial을 참조하십시오.

또한 ICollection<Entity>을 매개 변수로 허용하는 방법에서는 ICollection<IEntity>을 수락하도록 서명을 변경해야 할 수 있습니다.

+0

제 문제는 제네릭 컬렉션과 관련이없는 것으로 판명되었지만 제안 된 단계는 메서드에 전달 된 제네릭 컬렉션을 얻는 데 충분했습니다. 감사! –

관련 문제