Есть ли шаблон для наследования от невидимого класса?

Чтобы визуализировать мою проблему, вот небольшая картинка:

Проблема

У нас тут две сборки. Оба они запутаны. База написана и запутана нами. Особый написан и запутан другим человеком А. У А нет наших исходников, а у нас нет его. Вся идея в том, что A хочет иметь возможность расширять каждую функцию в нашем BaseAssembly. A знает, что у нас есть реализации для всех общедоступных видимых интерфейсов в BaseInterfaceAssembly. Он хочет расширить наш BaseClass, добавив methodB() и сделав что-то в methodA() до того, как будет вызвана базовая реализация. BaseClass является внутренним и запутанным.

Это тот момент, когда декоратор вступает в игру. Мы могли бы заставить A сделать декоратор для объекта BaseInterface. Для этого нам нужно создать абстрактную базу декораторов, в которой A нужно только переопределить methodA() и добавить methodB(). Для него не было бы никакой разницы. Для нас мы должны писать и поддерживать эти абстрактные декораторы для каждого интерфейса. Это накладные расходы, которые нам не нужны.

Первый вопрос, есть ли альтернатива, где обе стороны не имеют накладных расходов - я бы также принял какой-то хак, если он не вызывает проблем с производительностью после создания объекта?

Второй вопрос, если нет альтернативы, то есть ли способ написать один абстрактный декоратор всех интерфейсов, которые есть и которые будут в будущем?

ИЗМЕНИТЬ

По запросу пример кода:

public interface BaseInterface
{
    void MethodA();
}

internal class BaseClass : BaseInterface
{
    public virtual void MethodA()
    {
        //do something
    }
}

internal class SpecialClass : BaseClass
{
    public override void MethodA()
    {
        //do something before
        base.MethodA();
    }

    public void MethodB()
    {
        //do something
    }
}

С уважением, Иггдрасиль.


person Yggdrasil    schedule 24.10.2013    source источник
comment
Для этого нам нужно сделать абстрактную базу декоратора, почему мы? почему бы не возложить ответственность за написание декоратора + dec.base на разработчика декоратора? Кто контролирует инстанцирование?   -  person Marvin Smit    schedule 24.10.2013
comment
Хороший вопрос! Возможно, вы можете создать оболочку с вызовами Interop. Можете ли вы опубликовать какой-нибудь код, пожалуйста, или Точно так же, как методы расширения в C #, он также применяет шаблон Decorater.   -  person Bassam Alugili    schedule 24.10.2013
comment
stackoverflow.com/questions/15211385/   -  person Bassam Alugili    schedule 24.10.2013
comment
Спасибо за совет. Я добавил пример кода. Что касается методов расширения, они работают для расширения MethodB(), но я не работаю для манипулирования MethodA(), как показано в примере кода.   -  person Yggdrasil    schedule 24.10.2013