检查接口是否在编译时由类型实现

时间:2012-10-29 12:09:12

标签: c# asp.net .net

我有一个项目,我希望保留对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)

2 个答案:

答案 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