为什么System.Windows.Shape.Path密封了?

时间:2009-09-26 23:41:55

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

我试图扩展shape类以包含一个额外的变量,但发现该类已被密封。我如何使用替代实施方法简单地实现这一目标?

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

2 个答案:

答案 0 :(得分:2)

如果要添加的变量是您只能读取的变量,并且是根据Path类的其他成员计算的,则可以添加一个可以返回值的扩展方法。

但是,如果不是这样的话:

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

答案 1 :(得分:1)

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

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

TextBlock类不知道Grid.Row使用的Grid.ColumnGrid属性。

您可以阅读有关attached properties on MSDN的更多信息。