我试图扩展shape类以包含一个额外的变量,但发现该类已被密封。我如何使用替代实施方法简单地实现这一目标?
创建一个新类并存储一个形状,通过最简单的方法传递所有方法调用;我确定有更好的方法吗?
答案 0 :(得分:2)
如果要添加的变量是您只能读取的变量,并且是根据Path类的其他成员计算的,则可以添加一个可以返回值的扩展方法。
但是,如果不是这样的话:
考虑创建一个继承自Path的父级 - Shape的类,该类未密封。 然后为此添加一个私有Path成员。您可以免费获取所有形状方法调用,并且只需要为Path的唯一成员提供包装器。
答案 1 :(得分:1)
WPF有一个名为附加属性的强大概念。我不确定你要做什么,但也许你可以通过使用这个概念来解决你的问题。为了提供示例,Grid.Row
和Grid.Column
属性是附加到Grid
内元素的属性。
<Grid>
...
<TextBlock Grid.Row="1" Grid.Column="2" ... />
</Grid>
TextBlock
类不知道Grid.Row
使用的Grid.Column
和Grid
属性。
您可以阅读有关attached properties on MSDN的更多信息。