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

自定义关系判断


		/// <summary>
		/// 兼顾类与类 类与接口 接口与接口
		/// </summary>
		/// <param name="targetType">目标子类型</param>
		/// <param name="targetBaseType">目标基类型</param>
		/// <returns></returns>
		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

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值