博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【.Net】在C#中判断某个类是否实现了某个接口
阅读量:6174 次
发布时间:2019-06-21

本文共 1061 字,大约阅读时间需要 3 分钟。

有时我们需要判断某个类是否实现了某个接口(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也可以用来判断继承关系。

于是,对于以下的代码:

1 interface I { /* ... */ }2 class A : I { /* ... */ }3 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

 

转载地址:http://ydqba.baihongyu.com/

你可能感兴趣的文章
Creating a Windows Image on OpenStack
查看>>
jquery图片自动缩放
查看>>
ie6 失真问题
查看>>
Regular Expression
查看>>
你到了第几层?图片式标题、按钮与隐藏文本
查看>>
cocos2d-x中调用android UI控件时要通过Handler来传递消息,不然会挂掉
查看>>
mysql存储过程使用需要注意
查看>>
大话重构连载14:我们是这样自动化测试的
查看>>
centos xrdp rdesktop
查看>>
Jquery 文本 精确查找
查看>>
我的友情链接
查看>>
本年度好技能
查看>>
rsync服务模式+客户端访问
查看>>
我的友情链接
查看>>
Web服务之LNMMP架构及动静分离实现
查看>>
Neutron - flat模式
查看>>
SQLite中使用全文搜索FTS
查看>>
分布式文件系统FastDFS如何做到高可用
查看>>
在MAC Pro上安装Windows8.1和2012R2
查看>>
iis6 php安装 (一)
查看>>