public interface IAnimal { } public interface IDog : IAnimal { } public class Dog : IDog { } public class Cate : IAnimal { } public class Parrot { }
var iAnimalType = typeof(IAnimal); var iDogType = typeof(IDog); var dogType = typeof(Dog); var cateType = typeof(Cate); var parrotType = typeof(Parrot); Console.WriteLine(iAnimalType.IsAssignableFrom(iDogType) ? $"{iDogType.Name} was inherited from {iAnimalType.Name}" : $"{iDogType.Name} was not inherited from {iAnimalType.Name}"); Console.WriteLine(iAnimalType.IsAssignableFrom(dogType) ? $"{dogType.Name} was inherited from {iAnimalType.Name}" : $"{dogType.Name} was not inherited from {iAnimalType.Name}"); Console.WriteLine(iDogType.IsAssignableFrom(dogType) ? $"{dogType.Name} was inherited from {iDogType.Name}" : $"{dogType.Name} was not inherited from {iDogType.Name}"); Console.WriteLine(iAnimalType.IsAssignableFrom(cateType) ? $"{cateType.Name} was inherited from {iAnimalType.Name}" : $"{cateType.Name} was not inherited from {iAnimalType.Name}"); Console.WriteLine(iAnimalType.IsAssignableFrom(parrotType) ? $"{parrotType.Name} inherited from {iAnimalType.Name}" : $"{parrotType.Name} not inherited from {iAnimalType.Name}"); Console.ReadKey();
输出结果:spa
IDog was inherited from IAnimal
Dog was inherited from IAnimal
Dog was inherited from IDog
Cate was inherited from IAnimal
Parrot not inherited from IAnimalcode
Dog d=new Dog(); var result=typeof(IDog).IsInstanceOfType(d); Console.WriteLine(result? $"Dog was inherited from IDog": $"Dog was not inherited from IDog"); Console.ReadKey();
输出结果:对象
Dog was inherited from IDog继承
public interface IAnimal { } public interface IDog : IAnimal { } public class Dog : IDog { } public class Husky : Dog { } public class Cate : IAnimal { } public class Parrot { }
Husky husky = new Husky(); var result = husky.GetType().IsSubclassOf(typeof(Dog)); Console.WriteLine(result ? $"Husky was inherited from Dog" : $"Husky was not inherited from Dog");
输出结果:接口
Husky was inherited from Dogit
这个方法不能用于接口,若是穿接口进去永远返回的都是falseclass
Dog dog = new Dog(); var dogResult = dog.GetType().IsSubclassOf(typeof(IDog)); Console.WriteLine(dogResult);
结果:方法
falseim