0

我有一个项目,我想保留对该类型的引用,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)

4

2 回答 2

5

为什么不使用泛型?

private static Type currentType = null;

public static void Initalize <T>() where T: ITest {
     currentType = typeof(T);
}
于 2012-10-29T12:11:01.623 回答
2

您需要将Initialize方法更改为:

public static void Initialize(ITest current)

或者,您可以使用泛型来限制类型,例如

public static void Initialize<T>(T current) where T: ITest
于 2012-10-29T12:12:01.057 回答