Полиморфизм с помощью методов расширения?

У меня есть библиотека классов, которые содержат некоторые базовые классы и другие, которые являются производными от них. В этой библиотеке классов я использую полиморфизм, чтобы делать то, что я хочу. Теперь в потребляющем приложении я хочу изменить поведение некоторого кода на основе типа времени выполнения дочерних классов. Итак, предположим следующее:

public class Base { }
public class Child1 : Base { }
public class Child2 : Base { }

Теперь в приложении-потребителе я хочу сделать следующее: (обратите внимание, что все следующие классы находятся в приложении-потребителе и на них нельзя ссылаться в библиотеке классов):

public interface IMyInterface1 { }
public interface IMyInterface2 { }
public static class Extensions
{
    public static void DoSomething(this Base myObj, Object dependency)
    {

    }

    public static void DoSomething(this Child1 myObj, Object dependency)
    {
        IMyInterface1 myInterface = dependency as IMyInterface1;
        if (myInterface != null)
        {
            //Do some Child1 specific logic here
        }
    }

    public static void DoSomething(this Child2 myObj, Object dependency)
    {
        IMyInterface2 myInterface = dependency as IMyInterface2;
        if (myInterface != null)
        {
            //Do some Child2 specific logic here
        }
    }
}

ОБНОВИТЬ:

Это не работает. Он всегда вызывает метод расширения базового класса. Есть ли другой способ, который позволит мне сделать это и избежать необходимости явно проверять тип времени выполнения? Причины в том, что больше классов, которые получены изBase могут быть добавлены и соответствующие методы расширения могут быть получены из какой-то другой внешней сборки.

Заранее спасибо.

Ответы на вопрос(5)

Ваш ответ на вопрос