IsInstanceOfType
GetInterfaces()
interface I
{
}
interface II : I
{
}
class III : II
{
}
class IIII : III
{
}
// 判断某个接口或类是否继承了某个接口
Array.IndexOf(typeof(IIII).GetInterfaces(), typeof(I))
IsSubclassOf 判断一个类型是不是继承自指定的类型
bool res = false;
// 不适用于接口
res = typeof(IIII).IsSubclassOf(typeof(I));
System.Console.WriteLine(res); // False
// 不适用于接口
res = typeof(II).IsSubclassOf(typeof(I));
System.Console.WriteLine(res); // False
// 不适用于接口
res = typeof(IIII).IsSubclassOf(typeof(II));
System.Console.WriteLine(res); // False
res = typeof(IIII).IsSubclassOf(typeof(III));
System.Console.WriteLine(res); // True
// 相同类型返回False
res = typeof(IIII).IsSubclassOf(typeof(IIII));
System.Console.WriteLine(res); // False
IsAssignableFrom()
res = typeof(I).IsAssignableFrom(typeof(I));
System.Console.WriteLine(res); // True
res = typeof(I).IsAssignableFrom(typeof(II));
System.Console.WriteLine(res);// True
res = typeof(I).IsAssignableFrom(typeof(III));
System.Console.WriteLine(res);// True
res = typeof(III).IsAssignableFrom(typeof(IIII));
System.Console.WriteLine(res);// True
res = typeof(IIII).IsAssignableFrom(typeof(IIII));
System.Console.WriteLine(res);// True