次のクラスがあります。
public class EntityBase<T>
{
public T Id { get; set; }
}
そしてそれは実装者です:
public class ClassA : EntityBase<Int32>
{
...
}
public class ClassB : EntityBase<Int64>
{
...
}
そして、クラスについて知らないコードでは、EntityBase<...> の存在についてのみ知っているので、次のようにしますClassA
。ClassB
// Here for sure I get the list of `ClassA`
object obj = GetSomeHowListOfClassA();
List<EntityBase<Int32>> listOfEntityBases = (List<EntityBase<Int32>>)obj;
そして、私はエラーが発生します:
Unable to cast object of type 'System.Collections.Generic.List`1[...ClassA]' to type 'System.Collections.Generic.List`1[...EntityBase`1[System.Int32]]'.
私は次のように修正します:
var listOfEntityBases = new List<EntityBase<Int32>>(obj);
しかし、新しい List<> を作成しているので、この方法は好きではありません。キャストする方法はありますか?前進のためのThx。