次のような状況があります。
public interface I {}
public class D1 : I {}
public class D2 : I {}
public class A
{
public List<D1> Collection {get;set;}
//Other Members
}
public class B
{
public List<D2> Collection {get;set;}
//Other Members
}
したがって、A と B の両方に、I から派生した要素を持つ List があります。
A と B の基本クラスを定義するにはどうすればよいですか?
PS I 基本クラスを一般化しようとしました:
class Base<T> where T : I
{
List<T> Collection {get;set;}
}
A:Base<D1>{..}; B:Base<D2> {..}
しかし、それは私に何も与えません(または私はそう思うだけです):私はそうすることができません:
Base<I> b;
b= new A();
b= new B();
からにキャストすることは不可能であるList<I>
ためList<D1>
ありがとう