B
是一个派生自 的类A
。我需要A
从现有对象创建一个新对象B
。
我需要这个,因为在我的应用程序中,我使用了很多比(包含大量参考数据)A
轻得多的实例,否则我会用完内存。B
如何在不手动复制自定义方法中的所有“字段”值的情况下转换B
为?A
A
B
是一个派生自 的类A
。我需要A
从现有对象创建一个新对象B
。
我需要这个,因为在我的应用程序中,我使用了很多比(包含大量参考数据)A
轻得多的实例,否则我会用完内存。B
如何在不手动复制自定义方法中的所有“字段”值的情况下转换B
为?A
A
考虑使用组合(即您B
包含一个私有A
的成员数据)而不是继承。添加一个方法来B
返回它,这样你就可以在其余的被垃圾收集A
时保留它。B
只需投射它:
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;
}
}