Polymorphismus durch Verlängerungsmethoden?

Ich habe eine Klassenbibliothek, die einige Basisklassen und andere, die von ihnen abgeleitet sind, enthält. In dieser Klassenbibliothek nutze ich den Polymorphismus, um das zu tun, was ich will. In einer umfangreichen Anwendung möchte ich das Verhalten von Code basierend auf dem Laufzeit-Typ der untergeordneten Klassen ändern. Nehmen wir also Folgendes an:

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

Jetzt möchte ich in der konsumierenden Anwendung Folgendes tun (beachten Sie, dass sich alle folgenden Klassen in der konsumierenden Anwendung befinden und nicht in der Klassenbibliothek referenziert werden können):

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
        }
    }
}

AKTUALISIEREN:

Das funktioniert nicht. Es wird immer die Erweiterungsmethode der Basisklasse aufgerufen. Gibt es eine andere Möglichkeit, um dies zu tun und nicht explizit nach dem Laufzeit-Typ suchen zu müssen? Der Grund ist, weil mehr Klassen, die von der abgeleitet sindBase könnten hinzugefügt werden und entsprechende Erweiterungsmethoden könnten von einer anderen externen Assembly stammen.

Danke im Voraus.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage