c# - 从父类的实例创建派生类的实例

标签 c# derived-class

一般来说,给定一个类 A、一个派生类 DerivedFromA 和一个 A 的实例,有没有办法从该实例构造 DerivedFromA?

例如,假设 DerivedFromA 简单地覆盖了 A 的一个或多个方法或属性。假设我有一些 Container 类,它带有返回 A 实例的 CreateA() 方法,而我要么不能要么不想要覆盖或以其他方式弄乱该 Container 类。我想要做的是获取 Container.CreateA() 返回的实例,将其传递给 DerivedFromA(A instanceOfA) 构造函数,并像处理 instanceOfA 一样处理生成的对象,并使用 instanceOfA 的所有方法、属性和数据,除了我已经覆盖的那些。

顺便说一句,有问题的语言是 C#,这有所不同。

谢谢。

最佳答案

您必须创建一个新的 DerivedFromA 实例,并使用该实例代替您的原始实例。但是,如果您这样做,它会正常工作。

只需像您展示的那样添加一个构造函数:

public DerivedFromA(A instanceOfA)
{
    // Copy members from instanceOfA into here as necessary
    this.Foo = instanceOfA.Foo;
    this.Bar = instanceOfA.Bar;

    // Setup unique values
    this.Baz = 42;
}

然后,当你打电话时,你可以这样做:

DerivedFromA instance = new DerivedFromA(container.CreateA());

关于c# - 从父类的实例创建派生类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6470929/

相关文章:

c# - .NET 服务器使用响应式扩展发送事件

c# - XMLSerializer 在序列化类时写入无效的 XML(有时)

c# - 为什么 SQLite 告诉我 "No current row"?

c# - Linq to SQL 类 - 存储过程签名更改

c# - 我可以将 C# 变量管理到 .js 中吗?

c# - 静态实例基类/派生类

c++ - 从基类方法调用虚方法

c++ - 如何将成员函数传递给基类构造函数?

WCF 派生类型和违反开闭原则

c++ - 不同的派生类共享相同的方法