1. IsAssignableFrom實例方法 判斷一個類或者介面是否繼承自另一個指定的類或者介面。 輸出結果: IDog was inherited from IAnimalDog was inherited from IAnimalDog was inherited from IDogCate ...
1. IsAssignableFrom實例方法 判斷一個類或者介面是否繼承自另一個指定的類或者介面。
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();
輸出結果:
IDog was inherited from IAnimal
Dog was inherited from IAnimal
Dog was inherited from IDog
Cate was inherited from IAnimal
Parrot not inherited from IAnimal
2.IsInstanceOfType 判斷某個對象是否繼承自指定的類或者介面
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
3.IsSubclassOf 判斷一個對象的類型是否繼承自指定的類,不能用於介面的判斷,這能用於判定類的關係
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 Dog
這個方法不能用於介面,如果穿介面進去永遠返回的都是false
Dog dog = new Dog(); var dogResult = dog.GetType().IsSubclassOf(typeof(IDog)); Console.WriteLine(dogResult);
結果:
false