我正在编写代码来填充 System.Windows.Documents 中类的
命名空间。这些属性中的每一个都接受 Margin
、Padding
和 BorderThickness
属性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/