C # Generika und Polymorphismus: ein Oxymoron?

Ich möchte nur bestätigen, was ich über Generics in C # verstanden habe. Dies ist in einigen Codebasen aufgetaucht, in denen eine generische Basisklasse zum Erstellen typsicherer abgeleiteter Instanzen verwendet wird. Ein sehr einfaches Beispiel dafür, wovon ich spreche,

public class SomeClass<T>
{
    public virtual void SomeMethod(){ }
}

public class DeriveFrom :SomeClass<string>
{
    public override void SomeMethod()
    {
        base.SomeMethod();
    }
}

Das Problem tritt dann auf, wenn ich abgeleitete Instanzen polymorph verwenden möchte.

public class ClientCode
{
    public void DoSomethingClienty()
    {
        Factory factory = new Factory();
        //Doesn't compile because SomeClass needs a type parameter!
        SomeClass someInstance = factory.Create();

        someInstance.SomeMethod();
    }
}

Es scheint, dass Sie, sobald Sie einen Generic in eine Vererbungshierarchie oder -schnittstelle einführen, diese Klassenfamilie nicht mehr polymorph verwenden können, außer vielleicht intern für sich. Ist das wahr?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage