다음과 같이 정의 된 인터페이스가 있습니다.List <interface>을 List <concrete>로 변환하려면 어떻게합니까?
public interface MyInterface {
object foo { get; set; };
}
및 그 인터페이스를 구현하는 클래스 :
public class MyClass : MyInterface {
object foo { get; set; }
}
다음과 같이 ICollection을 반환하는 함수를 만듭니다.
public ICollection<MyClass> Classes() {
List<MyClass> value;
List<MyInterface> list = new List<MyInterface>(
new MyInterface[] {
new MyClass {
ID = 1
},
new MyClass {
ID = 1
},
new MyClass {
ID = 1
}
});
value = new List<MyClass>((IEnumerable<MyClass>) list);
return value;
}
It 컴파일하지만
타입을 던질 수 없습니다. 'System.Collections.Generic.List
1[MyInterface]' to type 'System.Collections.Generic.IEnumerable
1 [MyClass]'유형의 객체를 형 변환 할 수 없습니다.
예외입니다. 내가 뭘 잘못하고 있죠?
System.Collections.Generic.List <>가 ConvertAll()을 직접 지원하므로 .Net 2.0 이상에서 작동하며 LINQ가 아닙니다. –
고마워, @ 리치. 나는 ConvertAll이 Linq 방법이라고 생각했지만, 나는 검사하는 것을 꺼려하지 않았다. –
이것은 마술을했습니다! 감사합니다 JSBangs. – acermate433s