У меня есть два класса, которые реализуют ISomeBehavior.Теперь я хочу, чтобы они поделились функциональностью.Обычно я бы заменил ISomeBehavior на абстрактный класс, например SomeBehaviorBase.Проблема в том, что один из подклассов уже является производным от другого класса, и этот другой класс не является программным обеспечением, которым мы владеем.(Это C #, поэтому множественное наследование не вариант.) Подкласс, производный от стороннего класса, не имеет реализации.Он просто наследуется от стороннего класса и реализует ISomeBehavior, поэтому сторонний класс можно обрабатывать так же, как и другие подклассы, реализующие ISomeBehavior.
На данный момент я реализовал реализациюметод расширения на ISomeBehavior.Теперь код потребления может вызывать метод.Проблема с этим подходом состоит в том, что я хочу заставить вызывающий код использовать этот метод расширения.Я не могу удалить SomeMethod () из интерфейса, потому что метод расширения должен в конечном итоге вызывать его.
Любые идеи о том, как сделать так, чтобы два класса элегантно имели одинаковое поведение, когда один из них уже наследуется от другого, третье лицо, класс?Примечание: шаблон разработки стратегии звучит так, как здесь имеет смысл, но этот шаблон используется, когда поведение изменяется среди подклассов.Поведение здесь не меняется;им просто нужно поделиться.