2011-12-02 57 views
1

我需要檢測IDictionary<string, string>類型的對象是否爲IDictionary<,>,並且我無法提供正確的比較邏輯。比較通用接口類型

我曾嘗試以下:

typeof(IDictionary<string, string>) 
     .GetInterface(typeof(IDictionary<,>).Name); 

typeof(IDictionary<string, string>) 
     .GetGenericTypeDefinition() 
     .GetInterface(typeof(IDictionary<,>).Name); 

調用typeof(Dictionary<string,string>).GetInterface(comparisonType.Name)返回預期的非空的結果,但如果我比較的IDictionary<string,string>型,GetInterface()返回null。同樣,在GenericTypeDefinition上進行比較也會返回null。

回答

7
typeof(IDictionary<string, string>).GetGenericTypeDefinition() == typeof(IDictionary<,>) 
+0

如何,我設法不要嘗試,我大惑不解。謝謝! –

3
static void Main(string[] args) 
    { 
     var x = typeof(IDictionary<string, string>); 
     var y = typeof(IDictionary<,>); 

     Console.WriteLine(x.GetGenericTypeDefinition() == y); 
    } 

返回true