2017-01-23 3 views
0

Пусть у меня есть следующий класскопируют поведение одного класса к другому классу

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

И еще один класс, который содержит первое как свойство

class B : Canvas 
{ 
    private readonly A _a; 

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

Как добиться такого же поведения без дублирования кода ? Если я использую base.OnMouseDown(), я получаю поведение Canvas, который имеет смысл, но мне нужно поведение украшенного класса, как я уверен, реализации декоратора здесь

ответ

1

Создать некоторые базовый класс, который наследует Canvas, а затем унаследовать это по A и 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 
} 

в результате вы получите один тот же метод OnMouseDown() с таким же поведением в A и B.

Смежные вопросы