C# 有没有办法从父引用构造子对象?
假设我有两门课:C# 有没有办法从父引用构造子对象?,c#,.net,C#,.net,假设我有两门课: public class ComplicatedParent { // Lots of data } public class SimpleChild : ComplicatedParent { public string SomeAdditionalData { get; set; } public SimpleChild(string arg) : base() { SomeAdditionalData = arg;
public class ComplicatedParent
{
// Lots of data
}
public class SimpleChild : ComplicatedParent
{
public string SomeAdditionalData { get; set; }
public SimpleChild(string arg) : base()
{
SomeAdditionalData = arg;
}
}
和SomeFunction
,该函数返回复杂parent的实例。有没有一种简单的方法可以从父对象的引用构造子对象,从而保留父对象的状态
实际上,complexedparent
类和SomeFunction
是第三方,因此我无法更改它们。您不能用该语言自动执行此操作。您可以使用Automper或手动指定来完成此操作。最好的方法是为SimpleChild编写一个构造函数,该构造函数将复杂Parent的实例作为参数。然后,构造函数将数据复制到整个数据库中。您可以尝试使用clone()创建complexdparent的副本,将其强制转换为SimpleChild,添加附加数据并返回它
有关克隆的帮助,请访问以下链接:
如果“保留父状态”的意思是保留父类的内部值,那么您不能这样做,您应该自己实现它。比如:
public static SimpleChildFromParent(ComplicatedParent cp); // static method in SimpleChild class.
//and somewhere in the code
SimpleChild sc = SimpleChild.SimpleChildFromParent(cp); // where cp is ComplicatedParent previously created and intialized.
注意。如果可以重写父对象的属性,则可以在子构造函数中获取父对象,并将调用委托给内部引用的父对象。如果父属性是虚拟的,这是可能的。> p>如果代码>复杂的父< /代码>真的是那么复杂,您应该考虑将其拆分为更小的类,并将实例存储在复杂的父< /代码>(聚合,而不是继承)中。如果这些对象是不可变的,那么从原型实现构造应该很容易
对象的构造,考虑