【发布时间】:2020-08-05 17:25:48
【问题描述】:
我想创建一个与另一个类具有相同字段名称但具有不同字段类型的类。 例如:
public class Core
{
public float Temperature { get; private set; }
public float Load { get; private set; }
public float Clock { get; private set; }
...
我得到了上面的类,我想要另一个具有所有字段但为布尔类型的类。
public class CoreThreshold
{
public bool Temperature { get; private set; }
public bool Load { get; private set; }
public bool Clock { get; private set; }
...
我这样做的方式是像上面那样硬编码,想知道是否有更好的方法。
我想让它可以 OOP 访问,而不是使用获取字符串并返回值的方法。 也不能像布尔值一样将浮点值设为 1 或 0(实际类型不是浮点数)。
可以做到吗,或者唯一的选择是对两个类的每个细节进行硬编码?
【问题讨论】:
-
要查找的术语是泛型。
-
您是想避免编写属性声明还是所讨论的类之间存在任何其他关系?
-
@AluanHaddad 是的,在提到泛型之后我意识到它们可能不是这里的正确工具(我们不想最终写出像类 TooGeneric
具有类型为 S、T、U 的公共字段 X、Y、Z)。 -
@TobiasKildetoft 是的,这是一个棘手的问题。我的一部分认为这是对继承的不当使用,但我的一部分发现能够以这种方式在 TypeScript 等语言中创建类型非常有用。再说一次,在 TypeScript 中,它只是有用的,因为结构类型在这里不适用。
-
除非你的例子很糟糕,否则这似乎是对面向对象编程的严重违反。一个名为
Temperature的属性在每个类中都应该相同。