有什么方法可以在构造函数中设置类的泛型类型(T),但不能在声明中设置?
public class Gen<T>
{
}
public class Da
{
}
public class Program
{
public static Gen<?> gen;
public static void Main(string[] args)
{
gen = new Gen<Da>();
}
}
答案 0 :(得分:7)
如果我正确理解您的要求,最简单的方法是使用非通用接口:
interface IGen { }
然后您的通用类可以是:
class Gen<T> : IGen { }
用法是:
IGen objectGen = new Gen<object>();
IGen intGent = new Gen<int>();
答案 1 :(得分:3)
是的,但只能使用非泛型变量,例如object
,任何非泛型基类或泛型类实现的任何接口。
public interface Intf {
void DoSomething();
}
public class Gen<T>: Intf {
public void DoSomething() {
// can use the generic stuff here
}
}
public class Da {
}
public class Program {
public static Intf gen;
public static void Main(string[] args) {
gen = new Gen<Da>();
gen.DoSomething();
}
}