2009-12-01 2 views
2

자신의 인터페이스 유형에 개체의 목록을 주조 : 나는 IList<IMyInterface>IList<MyClassThatImplementMyInterface> 캐스팅 수있는 방법난과 같이 자사의 인터페이스 유형에 고유 한 유형의 개체를 캐스팅 수있어 C#을

IMyInterface myValue = (IMyInterface)MyObjectThatImplementsMyInterface; 

를?

+0

IList의 IList의에 : IList<> 그들 중 하나가 될 것인지 잘 모르겠어요하지만

일부 링크 (인터페이스는 '안전'공변/contravariant 수있다)? 그들은 저에게 동일한 유형을 본다! – CesarGon

+1

꺾쇠 괄호는 이스케이프 처리되지 않아 가짜 태그처럼 보였으므로 Markdown이 먹었습니다. –

답변

9

나는 인터페이스가 아닌 기본 클래스에 대해서도 같은 질문 인 yesterday에 대답했습니다.

이 작업을 수행하는 방법은 목록을 반복하고 요소를 캐스팅하는 것입니다.

IList<A> listOfA = new List<C>().ConvertAll(x => (A)x); 

또한 Linq에 사용할 수 :이 ConvertAll를 사용하여 수행 할 수 있습니다

IList<A> listOfA = new List<C>().Cast<A>().ToList(); 
관련 문제