2015-05-01 73 views
5

我測試的對象是這樣的:是否有可能看到一個對象是否繼承IDictionary而不使用泛型類型參數?

if (item is IDictionary<object, object>) 

但是,這並不符合所有類型<sting, object>, <int, string>等其他組合的...

我只是想知道,如果它已經實現的接口,無論它使用的是什麼泛型類型。

我發現了一個例子說,這是有可能做這樣的事情:

dictionary.GetType().GetInterfaces().Any(x => x.GetGenericTypeDefinition == typeof(IDictionary<>)); 

但我還是要指定類型的簽名,或者它是無效的。

是否有可能做一個語句來檢查接口而不必指定類型?

+0

根據你的最終需求,如果你想知道你是否有字典而不是特定的IDictionary ,你可以檢查非泛型的IDictionary,而不是字典也實現。這個解決方案將取決於你的使用案例。 –

回答

7

你靠近,你真的只需要修復了語法:

dictionary.GetType().GetInterfaces().Any(x => x.GetGenericTypeDefinition() == typeof(IDictionary<,>)) 

注GetGenericTypeDefinition後(),和<>內的逗號。

+0

Ahhrg。我一直盯着這個這麼長時間,我沒有看到它。謝謝! – Guerrilla

相關問題