短い質問です。たとえばdouble weight
、楕円にフィールドを追加したいとします。これどうやってするの?
2コピココメントすいません
を参照している場合System.Windows.Shapes.Ellipse
、クラスを拡張することはできません - それはsealed
です。ただし、カスタム添付プロパティを使用して重み情報を追加できます。
次の行に沿ったもの: (" HelperClass
" 内)
public static readonly DependencyProperty WeightProperty = DependencyProperty.RegisterAttached(
"Weight",
typeof(double),
typeof(HelperClass),
new FrameworkPropertyMetadata(0)
);
public static void SetWeight(Ellipse element, double value){
element.SetValue(WeightProperty, value);
}
public static double GetWeight(Ellipse element) {
return (double)element.GetValue(WeightProperty);
}
そしてその後
HelperClass.SetWeight(ellipseInstance, 42d)
Ellipse
が独自のクラス (ではない
) である場合DependencyObject
、もちろん拡張は問題にならないはずです。
この種の状況では、1 つの属性が Ellipse であり、他の属性が Ellipse クラスに追加する属性であるクラスを作成します。これは少し汚れていますが、Ellipse のすべての機能と追加の属性を含むクラスを持つことができます。
class WeightedEllipse
{
public Ellipse ellipse;
public double weight;
public WeightedEllipse(double weight)
{
this.ellipse=new Ellipse();
this.weight=weight;
}
}