gpt4 book ai didi

c# - 转换继承的对象

转载 作者:行者123 更新时间:2023-11-30 18:55:04 25 4
gpt4 key购买 nike

我想这对你们大多数人来说都是一个简单的问题,但我在网上看到的答案都不是我需要的。所以,我有一个基类和另一个继承它的基类:

public class MyBase
{
public DateAdded { get; set; }
}

public class MySecond : MyBase
{
public MySecond(MyBase prototype)
{
this = (MySecond)prototype; // this is read-only and does not work
}

public DateDeleted { get; set; }
}

如何实例化 MyBase,将其作为原型(prototype)提供给 MySecond 的另一个实例,并确保后者获取原型(prototype)的所有值,而无需显式逐一传输值?

最佳答案

基本上,你不能。您可以使用反射以自动方式复制值,但它仍然会一个一个地复制它们,并且不会让您对如何它们被复制有尽可能多的控制(例如,是否你需要做一个深拷贝)。

正如 dasblinkenlight 所述,让每个类负责复制自己的属性可能更合适,除非这并不总是合适的。

请注意,您可能需要检查 prototype 是否本身MySecond 的一个实例,如果是,则从中复制属性。

另请注意,如果您使用组合而不是继承,并尝试使类不可变,那么很多时候这种事情就变得不必要或微不足道了。这并不总是合适的,但我看到很多人过度使用继承。

关于c# - 转换继承的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12097233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com