欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#中實(shí)現(xiàn)判斷某個(gè)類(lèi)是否實(shí)現(xiàn)了某個(gè)接口

 更新時(shí)間:2015年06月10日 10:39:41   投稿:junjie  
這篇文章主要介紹了C#中實(shí)現(xiàn)判斷某個(gè)類(lèi)是否實(shí)現(xiàn)了某個(gè)接口,本文給出了多種判斷方法,需要的朋友可以參考下

有時(shí)我們需要判斷某個(gè)類(lèi)是否實(shí)現(xiàn)了某個(gè)接口(Interface),比如在使用反射機(jī)制(Reflection)來(lái)查找特定類(lèi)型的時(shí)候。

簡(jiǎn)單來(lái)說(shuō),可以使用Type.IsAssignableFrom方法:

typeof(IFoo).IsAssignableFrom(bar.GetType());
typeof(IFoo).IsAssignableFrom(typeof(BarClass));

從字面意思可以看出,IsAssignableFrom表示BarClass類(lèi)型能否賦值給IFoo接口,所以它返回true的條件就是BarClass直接或間接實(shí)現(xiàn)了IFoo接口。Type類(lèi)型中還有一個(gè)方法是IsSubclassOf,它只能用于判斷類(lèi)的繼承關(guān)系,比如

typeof(FooClass).IsSubclassOf(typeof(BarClass)) == true


表示FooClass是繼承自BarClass。

當(dāng)然IsAssignableFrom也可以用來(lái)判斷繼承關(guān)系。

于是,對(duì)于以下的代碼:

interface I { /* ... */ }
class A : I { /* ... */ }
class B : A { /* ... */ }

IsSubclassOf和IsAssignableFrom的返回值為:

typeof(A).isAssignableFrom(typeof(I)); // false
typeof(A).isSubClassOf(typeof(I)); // false
 
typeof(I).isAssignableFrom(typeof(A)); // true
typeof(I).isAssignableFrom(typeof(B)); // true
typeof(B).isSubClassOf(typeof(I)); // false
 
typeof(A).isAssignableFrom(typeof(A)); // true
typeof(A).isSubClassof(typeof(A)); // false
 
typeof(A).isAssignableFrom(typeof(B)); // true
typeof(A).isSubClassof(typeof(B)); // false
 
typeof(B).isAssignableFrom(typeof(A)); // false
typeof(B).isSubClassof(typeof(A)); // true

相關(guān)文章

最新評(píng)論