时间:2021-05-20
有时我们需要判断某个类是否实现了某个接口(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声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Android实现判断某个服务是否正在运行的方法。分享给大家供大家参考,具体如下:/***判断某个服务是否正在运行的方法**@parammCont
本文实例讲述了C#接口实现方法。分享给大家供大家参考。具体如下:在讲解C#实现接口的实例解析之前我们来看看C#接口的定义,如果一个类派生于一个接口,它就会执行某
本文实例讲述了PHP对象接口简单实现方法。分享给大家供大家参考,具体如下:对象接口(interface)使用接口(interface),可以指定某个类必须实现哪
判断某个服务是否正在运行的方法实现代码:/*****@parammContext*@paramserviceName*是包名+服务的类名(例如:net.loon
instanceof判断某个对象是否是某个类的实例或者某个类的子类的实例。它的判断方式大概是这样的:publicbooleanfunction(Objectob