【发布时间】:2009-09-26 23:41:55
【问题描述】:
我试图扩展形状类以包含一个附加变量,但发现该类是密封的。如何使用替代实现方法简单地实现这一目标?
正在创建一个新类并存储一个形状,并通过最简单的方法传递所有方法调用;我确定有更好的方法吗?
【问题讨论】:
标签: c# .net wpf inheritance extension-methods
我试图扩展形状类以包含一个附加变量,但发现该类是密封的。如何使用替代实现方法简单地实现这一目标?
正在创建一个新类并存储一个形状,并通过最简单的方法传递所有方法调用;我确定有更好的方法吗?
【问题讨论】:
标签: c# .net wpf inheritance extension-methods
如果您要添加的变量是您只会从中读取的变量,并且是由 Path 类的其他成员计算得出的,您可以添加一个扩展方法来返回您的值。
但是,如果不是这样:
考虑创建一个继承自 Path 的父级 - Shape 的类,该类不是密封的。 然后向其中添加一个私有路径成员。您可以免费获取所有 shape 方法调用,并且只需为 Path 的唯一成员提供包装器。
【讨论】:
WPF 有一个名为附加属性的强大概念。我不确定您要做什么,但也许您可以通过使用此概念来解决您的问题。举个例子,Grid.Row 和 Grid.Column 属性是附加到 Grid 内的元素的属性。
<Grid>
...
<TextBlock Grid.Row="1" Grid.Column="2" ... />
</Grid>
TextBlock 类不知道Grid 使用的Grid.Row 和Grid.Column 属性。
你可以阅读更多关于attached properties on MSDN的信息。
【讨论】: