C # Дженерики и полиморфизм: оксюморон?

Я просто хочу подтвердить, что я понял о Generics в C #. Это произошло в паре базовых кодов, в которых я работал, где универсальный базовый класс используется для создания безопасных типов производных экземпляров. Очень простой пример того, о чем я говорю,

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

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

Проблема возникает тогда, когда я хочу использовать производные экземпляры полиморфно.

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();
    }
}

Кажется, что когда вы вводите Generic в иерархию или интерфейс наследования, вы больше не можете использовать это семейство классов полиморфно, за исключением, возможно, внутреннего для себя. Это правда?

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

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