gpt4 book ai didi

c# - 是否有结构继承的实用替代方案? (C#)

转载 作者:可可西里 更新时间:2023-11-01 09:08:31 24 4
gpt4 key购买 nike

我正在编写代码来填充 System.Windows.Documents 中类的 MarginPaddingBorderThickness 属性 命名空间。这些属性中的每一个都接受 System.Windows.Thickness 形式的值,这是一个结构。

但是,我希望将一些额外的数据与这些属性分配中的每一个关联起来,这些数据随后可能会被我的代码检索到。如果 Thickness 是一个类,我将从它继承并在子类中定义属性来存储我的附加数据项。但是因为它是一个结构,所以继承是不可能的。

有没有什么实用的方法可以实现这一点,同时保持与我正在填充的属性的类型兼容性?

谢谢你的想法,

蒂姆

最佳答案

没有好的替代品。

根据您尝试执行的操作,您或许可以使用所需的属性定义自己的类,并定义隐式转换运算符以隐式转换为正确的结构类型。然后您就可以将您的类传递给所有需要 Thickness 参数的方法。

不过,这与使用隐式转换运算符的建议背道而驰,因为它声明隐式转换不应丢失任何信息。您将无法从您正在阅读的属性中获取 Thickness,也无法查看您附加的额外信息。

你可以这样实现它:

public class ThicknessEx
{
public string ExtraData { get; set; }
public Thickness Thickness { get; set; }

public static implicit operator Thickness(ThicknessEx rhs)
{
return rhs.Thickness;
}
}

但是,将额外数据存储在别处可能会更好。如何做到这一点取决于您的需求和应用。

关于c# - 是否有结构继承的实用替代方案? (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2707948/

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