我只想确认我对C#中泛型的理解。这已经出现在我工作过的几个代码库中,其中泛型基类用于创建类型安全派生实例。我正在谈论的一个非常简单的例子,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();
}
}
看来,一旦你介绍一个通用成一个继承体系或接口,可以不再使用类家族中多态的方式也许除了内部本身。真的吗?
在我看来,似乎SomeClass是DeriveFrom的基类,而不是SomeClass,这是你似乎认为它应该是。 –
Thanatos
2009-11-29 06:58:34