私は次のクラスを持っています(非常に単純化されたバージョン):
public interface A { }
public abstract class A<TType, TContentType> : A where TType: A
{
public abstract void Initialise();
public abstract TType DeepCopy();
public TContentType Value { get; private set; }
}
public class B : A<B, double>
{
public override void Initialise() { this.Value = 3.0; }
public override B DeepCopy() { return new B(); }
}
public class C : A<C, char>
{
public override void Initialise() { this.Value = 'v'; }
public override C DeepCopy() { return new C(); }
}
次のように、A タイプのリストを作成できます。
public static List<A> CreateList()
{
List<A> myList = new List<A>();
myList.Add(new B());
myList.Add(new C());
return myList;
}
タイプ A の単一のオブジェクトを指定すると、指定された長さに基づいてこれらのオブジェクトのリストを作成するメソッドを作成したいと思います。
例えば:
public static List<A> CreateList(A baseA, int length)
{
List<A> myList = new List<A>();
for (int i = 0; i < length; i++)
{
// create a deep copy of baseA
// call the Initialise method on the new object
// add to the list
}
return myList;
}
A には何も含まれていないため、A の型を知らずにディープ コピーを作成する方法がわかりません。このためのジェネリック メソッドを作成する必要がありますか?
どんなポインタでも大歓迎です