2017-01-23 3 views
0

Angenommen, ich habe die folgende KlasseKopieren Sie das Verhalten einer Klasse in eine andere Klasse

class A : Canvas 
{ 
    protected override void OnMouseDown(MouseButtonEventArgs e) 
    { 
     //the behaviour 
    } 
} 

Und eine andere Klasse, die zuerst als eine Eigenschaft enthält

class B : Canvas 
{ 
    private readonly A _a; 

    protected override void OnMouseDown(MouseButtonEventArgs e) 
    { 
     //the same behaviour 
    } 
} 

Wie das gleiche Verhalten ohne doppelten Code zu erreichen ? Wenn ich base.OnMouseDown() verwenden, erhalte ich das Verhalten von Canvas was Sinn macht, aber ich brauche das Verhalten dekoriert Klasse, wie ich bin Umsetzung Muster Decorator hier

Antwort

1

eine Basisklasse erstellen, die Canvas erbt und dann erben es durch A und B:

class CommonClass : Canvas 
{ 
    protected override void OnMouseDown(MouseButtonEventArgs e) 
    { 
     //some behavior 
    } 

    //other common implementation for derived classes 
} 

class A : CommonClass 
{ 
    // implementation specific to "A" and overrides 
} 

class B : CommonClass 
{ 
    // implementation specific to "B" and overrides 
} 

Als Ergebnis erhalten Sie eine gleiche Methode OnMouseDown() mit demselben Verhalten in A und B bekommen.

Verwandte Themen