Как подклассы могут совместно использовать поведение, если один уже является производным от другого базового класса?

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

На данный момент я реализовал метод расширения на ISomeBehavior. Теперь код потребления может вызвать метод. Проблема с этим подходом состоит в том, что я хочу заставить вызывающий код использовать этот метод расширения. Я не могу удалить SomeMethod () из интерфейса, потому что метод расширения должен в конечном итоге вызвать его.

Есть ли идеи, как позволить двум классам элегантно совместно использовать одно и то же поведение, когда один из них уже является производным от другого, стороннего класса? Примечание. Шаблон разработки стратегии звучит здесь так, как будто он имеет смысл, но этот шаблон используется, когда поведение изменяется между подклассами. Поведение здесь не меняется; им просто нужно поделиться.

6
задан Bob Horn 18 February 2011 в 14:39
поделиться