2012-10-29 109 views
0

我有一個項目,我想保留對Type的引用,並且稍後將initalize該類型的實例。但我想要一些編譯時類型檢查,所以我只能提供實現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)

回答

5

你爲什麼不使用泛型?

private static Type currentType = null; 

public static void Initalize <T>() where T: ITest { 
    currentType = typeof(T); 
} 
2

你需要改變你的Initialize方法:

public static void Initialize(ITest current) 

或者,你可以使用泛型約束類型例如

public static void Initialize<T>(T current) where T: ITest 
相關問題