gpt4 book ai didi

c# - 从继承类的实例轻松转换

转载 作者:行者123 更新时间:2023-11-30 16:22:37 25 4
gpt4 key购买 nike

我有两个类,一个继承另一个,例如:-

public class A
{
public string AA { get; set; }
public double AB { get; set; }
}

public class B : A
{
public double? BA { get; set; }
}

现在,我知道如果我有一个对象 B 的实例,我可以将其转换为类型 A,但我有一个 A 实例,我想将其实例化为类型 B 对象。我知道我可以在 B 的类中放置一个构造函数来复制所有属性值,但是基类 A 有很多属性并且很可能添加了更多属性,所以我担心丢失一个或忘记添加它当我将它添加到 A 时进入 B 的构造函数。请问有没有简单的方法可以做到这一点?

--------编辑------

谢谢大家,不幸的是,这不是我的用例,这是一个 friend 向我开除的问题。据我所知,存在问题,他无法更改基类。据我了解,基类是一个连接到数据库调用的类,然后他想获取该数据并为管理编辑屏幕添加一些额外的属性,然后他的代码将使用这些属性来更新基本数据对象的属性。我的第一 react 是将基础对象作为他的对象的属性,但有一个原因让他更容易用他正在使用的工具将其“扁平化”。我不认为有办法做到这一点,但我想我会检查以防我遗漏了什么 - 我认为只问基本问题会更容易,而不是包括背景,这可能只会引发更多问题并搅浑水(据我所知,他正在遭受“无法控制的情况”)。

最佳答案

I know I could put a constructor in B's class which copies all the property values over, but the base class, A, has quite a few properties and may well have more added, so I'm worried about missing one or forgetting to add it in to B's constructor when I add it to A. Is there an easy way of doing this, please?

通常,这是设计缺陷的迹象。我会首先重新考虑您的设计,并确定这是否真的有必要,或者您是否可以在此处使用其他方法。话虽这么说……

没有简单的方法可以做到这一点。如果您需要从 A 实例创建一个 B 实例,您确实需要将值复制到新实例。

然而,更好的选择可能是向 A 添加一个(可能是 protected)构造函数来设置所有这些属性,给定另一个 A 实例。 B 然后可以使用它来创建自己,这至少满足了匹配定义它们的类中所有属性的要求。随着时间的推移,这应该会更容易维护它。

关于c# - 从继承类的实例轻松转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12304287/

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