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

Tim*_*ter 10 c# inheritance struct

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

但是,我希望将一些附加数据与每个属性分配相关联,随后可以通过我的代码检索这些属性.如果Thickness是一个类,我将继承它并在子类中定义属性以存储我的附加数据项.但由于它是一个结构,继承是不可能的.

有没有任何实用的方法来实现这一点,同时保持与我填充的属性的类型兼容性?

谢谢你的想法,

蒂姆

dri*_*iis 9

没有好的选择.

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

但这违背了使用隐式转换运算符的建议,因为它声明隐式转换不应丢失任何信息.您将无法从正在阅读的酒店获得厚度,并查看您附加的额外信息.

这是你如何实现它:

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

    public static implicit operator Thickness(ThicknessEx rhs)
    {
        return rhs.Thickness;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,通过将额外数据存储在其他地方,您可能会更好.如何做到这将取决于您的需求和应用.