c# - 创建与现有对象具有相同类型的类的实例

标签 c# base-class

我想根据属于简单类型层次结构的另一个实例的类型来实例化一个类的实例。

public abstract class Base
{
}

public class Derived1 : Base
{
}

public class Derived2 : Base
{
}

下面的代码很容易做到这一点

Base d1 = new Derived1();

Base d2;

if (d1 is Derived1)
{
    d2 = new Derived1();
}
else if (d1 is Derived2)
{
    d2 = new Derived2();
}

但是,如果没有 if...else if... 是否有可能实现这一点?通过(例如)使用反射链接来获取 d1 的构造函数(在我的示例中)并使用它来实例化任何类型的另一个实例 d1可能碰巧是?

最佳答案

d2 = (Base)Activator.CreateInstance(d1.GetType());

关于c# - 创建与现有对象具有相同类型的类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18127495/

相关文章:

c# - ASP.NET Azure Web应用程序频繁重定向到登录页面

c# - HttpClient 发布到 ApacheServer (Debian)

c# - LINQ查询中的竞赛条件

c++ - 从派生类初始化列表调用基类构造函数的顺序

python - 在 python 中重写 __import__

c# - 自定义验证属性的依赖注入(inject)

c# - 模型中属性的基于规则的可用值

c# - 我可以有一个基类,其中每个派生类都有自己的静态属性副本吗?

c++ - 模板继承和基本成员变量

JAXB Marshalling - 扩展现有类