我有以下课程(非常简化的版本):
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 不包含任何内容.. 我需要为此创建一个通用方法吗?
非常感谢任何指针