我有一个项目,我希望保留对Type
的引用,以及稍后初始化该类型的实例。但我想要一些编译时类型检查,所以我只能提供实现ITest
接口的类型。我想我必须改变方法,但我看不出如何。
private static Type currentType = null;
public static void Initalize (Type current){
currentType = current;
}
public class Test : ITest{}
public class Test2 {}
应该可以传递typeof(Test)
而不是typeof(Test2)
答案 0 :(得分:5)
为什么不使用泛型?
private static Type currentType = null;
public static void Initalize <T>() where T: ITest {
currentType = typeof(T);
}
答案 1 :(得分:2)
您需要将Initialize
方法更改为:
public static void Initialize(ITest current)
或者,您可以使用泛型来约束类型,例如
public static void Initialize<T>(T current) where T: ITest