我需要一个方法,在基类中创建一个对象的空克隆?例如:
public class ChildClass : ParentClass
{
public ChildClass()
{
}
}
public class ParentClass
{
public SomeMethod()
{
// I want to create an instance of the ChildClass here
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我们在父类中定义了一个抽象方法.并且,所有子类都实现它们.但是,实现对所有人来说都是一样的,只是一种不同的类型.
public class ChildClass : ParentClass
{
public ChildClass()
{
}
public ParentClass CreateEmpty()
{
return new ChildClass();
}
}
public class ParentClass
{
public SomeMethod()
{
// I want to create an instance of the ChildClass here
ParentClass empty = CreateEmpty();
}
public abstract ParentClass CreateEmpty();
}
Run Code Online (Sandbox Code Playgroud)
有没有办法从父类中执行此操作,以便我不必为每个不同的子类继续实现相同的逻辑?请注意,可能存在更多级别的继承(即ChildChildClass:ChildClass:ParentClass).
如果使用反射对您来说不是问题,您可以使用Activator类来完成:
//In parent class
public ParentClass CreateEmpty()
{
return (ParentClass)Activator.CreateInstance(this.GetType());
}
Run Code Online (Sandbox Code Playgroud)
这将返回所需类型的空对象.请注意,此方法不需要是虚拟的.
另一方面,我认为您当前的方法非常好,几行代码并不是那么糟糕.