Я просто хочу подтвердить, что я понял о Generics в С#. Это появилось в нескольких базовых кодах, с которыми я работал, когда общий базовый класс используется для создания производных экземпляров типа безопасных. Очень простой пример того, что я говорю,
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 в иерархию наследования или интерфейс, вы больше не сможете использовать это семейство классов полиморфным способом, за исключением, возможно, внутреннего для себя. Это правда?