国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#中實現判斷某個類是否實現了某個接口

2020-01-24 01:45:59
字體:
來源:轉載
供稿:網友

有時我們需要判斷某個類是否實現了某個接口(Interface),比如在使用反射機制(Reflection)來查找特定類型的時候。

簡單來說,可以使用Type.IsAssignableFrom方法:

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

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

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


表示FooClass是繼承自BarClass。

當然IsAssignableFrom也可以用來判斷繼承關系。

于是,對于以下的代碼:

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

IsSubclassOf和IsAssignableFrom的返回值為:

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 灌阳县| 彭水| 黔南| 巴青县| 蒙城县| 灵丘县| 正镶白旗| 肥东县| 遂昌县| 桃源县| 恭城| 永宁县| 两当县| 博客| 方山县| 会东县| 玛多县| 冕宁县| 营口市| 彰武县| 云浮市| 南皮县| 蓝山县| 贡嘎县| 阜新市| 土默特左旗| 于田县| 尚义县| 高青县| 平江县| 双牌县| 镇赉县| 清原| 庄浪县| 屏东市| 眉山市| 西乌| 榆林市| 嘉义县| 仙游县| 江北区|