【发布时间】:2010-10-16 13:54:40
【问题描述】:
我只用一种方法创建了没有字段的基本泛型类
public class Base<T> where T:class
{
public static T Create()
{
// create T somehow
}
}
public class Derived1 : Base<Derived1>
{
}
public class Derived2 : Base<Derived2>
{
}
public class Program
{
bool SomeFunction()
{
// Here I need reference to base class
Base baseref; // error here
switch(somecondition)
{
case 1:
baseref = Derived1.Create();
break;
case 2:
baseref = Derived1.Create();
break
}
// pass baseref somewhere
}
}
一个明显的选择是将基类转换为接口,但这是不可能的,因为接口不能包含静态方法。
我想我需要一些中间基类。请推荐
【问题讨论】:
-
你得到什么样的错误? “base”(小写)是 C# 中的关键字。
-
而且您似乎没有指定非泛型类“Base”。
-
Marijn,好的,让我们用 var1 替换 base
-
请您解释一下您想要实现的究竟是什么,而不是陷入语言机制和机制中。也许这不是最好的方法?
-
您的
SomeFunction()方法在类之外 - 它不会编译。它应该在哪个班级?
标签: c# generics polymorphism