2015-05-01 17 views
5

test ediyorum nesne:Nesne, jenerik tür parametreleri olmadan IDictionary mi devralıyor mu? Böyle

if (item is IDictionary<object, object>) 

Ama bu vb türleri <sting, object>, <int, string> diğer kombinasyonunun tüm uymuyor ...

Sadece arayüz hayata geçirdi olmadığını bilmek istiyorum

bakılmaksızın kullandığı jenerik tipler.

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

Ama yine tip imzasını belirtmek zorunda yoksa geçerli değil:

Ben böyle bir şey yaptığını sağlamanın mümkün olmadığını söyledi bir örnek buldum.

Arabirimi belirtmek zorunda kalmadan arabirimi denetleyen bir deyim oluşturmak mümkün mü?

+0

son ihtiyaçları ne bağlı, sen Sözlük da uygulayan yerine o olmayan jenerik IDictionary kontrol etmek mümkün olabilir. Bu çözüm kullanım durumunuza bağlı olacaktır. –

cevap

7

Sen yakın, sen gerçekten sadece sözdizimi düzeltmek gerekir:

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

Not GetGenericTypeDefinition sonra () ve <> iç virgül. Eğer bir Sözlük değil, özellikle ıdictionary varsa öğrenmek çalışıyorsanız

+0

Ahhrg. Uzun zamandır buna bakıyorum ve görmedim. Teşekkürler! – Guerrilla

İlgili konular