자신의 인터페이스 유형에 개체의 목록을 주조 : 나는 IList<IMyInterface>
에 IList<MyClassThatImplementMyInterface>
캐스팅 수있는 방법난과 같이 자사의 인터페이스 유형에 고유 한 유형의 개체를 캐스팅 수있어 C#을
IMyInterface myValue = (IMyInterface)MyObjectThatImplementsMyInterface;
를?
자신의 인터페이스 유형에 개체의 목록을 주조 : 나는 IList<IMyInterface>
에 IList<MyClassThatImplementMyInterface>
캐스팅 수있는 방법난과 같이 자사의 인터페이스 유형에 고유 한 유형의 개체를 캐스팅 수있어 C#을
IMyInterface myValue = (IMyInterface)MyObjectThatImplementsMyInterface;
를?
나는 인터페이스가 아닌 기본 클래스에 대해서도 같은 질문 인 yesterday에 대답했습니다.
이 작업을 수행하는 방법은 목록을 반복하고 요소를 캐스팅하는 것입니다.
IList<A> listOfA = new List<C>().ConvertAll(x => (A)x);
또한 Linq에 사용할 수 :이 ConvertAll를 사용하여 수행 할 수 있습니다
IList<A> listOfA = new List<C>().Cast<A>().ToList();
이이 인터페이스에 대한 공동/contravariance을 소개합니다 지금 당신을 도울 수 있지만, C# 4.0을주의하지 않는 '당신 때문에 특정 컬렉션 인터페이스를 직접 전송할 수 있습니다.
IList의 IList의에 :
IList<>
그들 중 하나가 될 것인지 잘 모르겠어요하지만일부 링크 (인터페이스는 '안전'공변/contravariant 수있다)? 그들은 저에게 동일한 유형을 본다! – CesarGon
꺾쇠 괄호는 이스케이프 처리되지 않아 가짜 태그처럼 보였으므로 Markdown이 먹었습니다. –