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

标签 c# inheritance struct

我正在编写代码来填充 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/

相关文章:

c# - 如何将 .NET C# 项目添加到网站?

c# - Csvhelper 如何使用本地化创建自定义 header ?

c# - Autofac 与 azure 移动应用程序

c++ - 从模板化父类中的派生内部类访问 protected 成员变量

python - 创建分层 python 对象,其中方法的参数来自层次结构

c - 是什么让这个结构不完整?

c# - Entity Framework 多对多自关联与乐观并发控制

python - 如何更好的基于配置文件实例化不同的子类?

C++ const struct &variable 产生缺少的标签名称

c - 在 C 中的 MPI 中如何创建结构的结构并将其发送到多个进程