【发布时间】:2010-12-21 08:29:08
【问题描述】:
我只是想确认一下我对 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 引入到继承层次结构或接口中,您就不能再以多态方式使用该类族,除非它可能是其内部的。这是真的吗?
【问题讨论】:
-
在我看来 SomeClass
是 DeriveFrom 的基类,而不是 SomeClass,您似乎认为它应该是这样。
标签: c# generics polymorphism