C# 反射 判断类的延伸类型
2021-07-02 13:08
标签:nes private asi 测试 代码 自己 公共类 data- sof 添加测试类: 1.判断是否实现了指定接口 2.判断是否继承了指定基类 3.判断是否重写了基类方法 获取指定方法的信息后,可以通过DeclaringType-声明此方法的成员类信息,判断与当前类信息是否一致。 4.判断类A是否为类B的嵌套类 测试: 5. 类/接口的访问类型 通过如下访问类型的组合,进行判断 C# 反射 判断类的延伸类型 标签:nes private asi 测试 代码 自己 公共类 data- sof 原文地址:https://www.cnblogs.com/kybs0/p/9928329.html public class TestClass2 : TestClass1
{
}
public class TestClass1 : TestClass0
{
public override void TestMethod()
{
}
}
public class TestClass0 : ITestInterface
{
public virtual void TestMethod()
{
}
}
public interface ITestInterface
{
}
//true
var hasInterface = typeof(TestClass2).GetInterfaces().Any(i => i.Name == nameof(ITestInterface));//true
var isSubOfTestClassBase = typeof(TestClass2).IsSubclassOf(typeof(TestClass0));//false
var hasTestClass2OverrideMethod = typeof(TestClass2).GetMethod(nameof(TestClass0.TestMethod)).DeclaringType.Equals(typeof(TestClass2));
//true
var hasTestClass1OverrideMethod = typeof(TestClass1).GetMethod(nameof(TestClass0.TestMethod)).DeclaringType.Equals(typeof(TestClass1)); public class TestClass
{
public class TestNestedClass
{
}
}
//true
var isNestedInTestClass= typeof(TestClass).GetNestedTypes().Any(i=>i.Equals(typeof(TestClass.TestNestedClass)));