如何自动将派生类对象转换为新的基类对象?

时间:2012-11-08 21:40:52

标签: c# parent-child

B是一个派生自A的类。我需要从现有对象A创建一个新对象B

我需要这个,因为在我的应用程序中,我使用了很多A个实例,它们比B(它包含大量参考数据)轻得多,否则我会耗尽内存

如果不在自定义方法中手动复制所有B字段的值,如何将A转换为A

2 个答案:

答案 0 :(得分:2)

考虑使用合成(即您的B包含私有A作为成员数据)而不是继承。向B添加一个方法以返回其A,这样您就可以在B的其余部分被垃圾收集时保留它。

答案 1 :(得分:0)

投下它:

var a = (A)b;

var a = b as A;

扩展另一个类的类总是可以转换为更原始的版本。请注意,虽然它仍然是B的同一个实例,但您只需将其视为A。如果您要创建B的克隆,那么您应该向B添加一个方法:

public class B : A  
{
    public A Clone()
    {
        var a = new A();
        a.SomeProperty = this.SomeProperty;
        ...etc...
        return a;
    }
}