C# - 类与类之间的继承关系判断
Type.IsSubclassof(Type type)
作用:用来确定 一个类是否派生自另一个类/ValueType/Enum/委托
(图片来源网络,侵删)
不能用于确定:接口是派生自另一个接口,还是类实现接口
class A{} class B : A{} A a; B b; var boo = b.GetType().IsSubclassOf(typeof(A)) // ture
Type.IsAssignableFrom(Type type)
作用:用于确定 接口是派生自另一个接口,还是类实现接口
class A{} class B : A{} A a; B b; var boo = a.GetType().IsAssignable(typeof(b)) // ture
自定义关系判断
/// /// 兼顾类与类 类与接口 接口与接口 /// /// 目标子类型 /// 目标基类型 /// public static bool IsAssignableType(Type targetType, Type targetBaseType) { return targetType?.IsSubclassOf(targetBaseType) != false || targetBaseType?.IsAssignableFrom(targetType) != false; }
interface IData { } class A : IData { } class B : A { } var boo = FEditorUtility.IsAssignableType(typeof(B), typeof(A)); Debug.Log(boo);//true boo = typeof(B).IsSubclassOf(typeof(A)); Debug.Log(boo);//true boo = typeof(B).IsSubclassOf(typeof(IData)); Debug.Log(boo);//false boo = typeof(A).IsAssignableFrom(typeof(B)); Debug.Log(boo);//true boo = typeof(IData).IsAssignableFrom(typeof(B)); Debug.Log(boo);//true
(图片来源网络,侵删)
(图片来源网络,侵删)
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。
还没有评论,来说两句吧...