【问题标题】:Why is System.Windows.Shape.Path sealed?为什么 System.Windows.Shape.Path 被密封?
【发布时间】:2009-09-26 23:41:55
【问题描述】:

我试图扩展形状类以包含一个附加变量,但发现该类是密封的。如何使用替代实现方法简单地实现这一目标?

正在创建一个新类并存储一个形状,并通过最简单的方法传递所有方法调用;我确定有更好的方法吗?

【问题讨论】:

    标签: c# .net wpf inheritance extension-methods


    【解决方案1】:

    如果您要添加的变量是您只会从中读取的变量,并且是由 Path 类的其他成员计算得出的,您可以添加一个扩展方法来返回您的值。

    但是,如果不是这样:

    考虑创建一个继承自 Path 的父级 - Shape 的类,该类不是密封的。 然后向其中添加一个私有路径成员。您可以免费获取所有 shape 方法调用,并且只需为 Path 的唯一成员提供包装器。

    【讨论】:

      【解决方案2】:

      WPF 有一个名为附加属性的强大概念。我不确定您要做什么,但也许您可以通过使用此概念来解决您的问题。举个例子,Grid.RowGrid.Column 属性是附加到 Grid 内的元素的属性。

      <Grid>
        ...
        <TextBlock Grid.Row="1" Grid.Column="2" ... />
      </Grid>
      

      TextBlock 类不知道Grid 使用的Grid.RowGrid.Column 属性。

      你可以阅读更多关于attached properties on MSDN的信息。

      【讨论】:

      • 我应该稍微具体一点;在这种情况下,变量是一个对象,所以我认为这行不通,不过是个好建议
      • 这种方法怎么行不通?附加属性可以是任何类型。
      • 我采用了稍微不同的方法,只是创建了一个新对象,该对象存储了对路径的引用和对我需要链接到的另一个对象的引用。我确信这可以以更优雅的方式完成,但对于我正在做的事情来说似乎还可以。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-31
      • 2016-06-27
      • 2014-12-27
      相关资源
      最近更新 更多