我只想确认一下我对C#中的Generics的理解.这已经出现在我使用的几个代码库中,其中使用通用基类来创建类型安全的派生实例.我正在谈论的一个非常简单的例子,
public class SomeClass<T>
{
public virtual void SomeMethod(){ }
}
public class DeriveFrom :SomeClass<string>
{
public override void SomeMethod()
{
base.SomeMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
当我想以多态方式使用派生实例时,问题出现了.
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();
}
}
Run Code Online (Sandbox Code Playgroud)
看来,一旦将Generic引入继承层次结构或接口,就不能再以多态方式使用该类族,除非它本身就是内部的.真的吗?