使用.NET反射可以通过以下方式判断一个方法是否不是set属性,也不是来自基类:
下面是一个示例代码,演示了如何使用.NET反射判断方法是否不是set属性,也不是来自基类:
using System;
using System.Reflection;
public class MyClass
{
public void MyMethod()
{
Console.WriteLine("MyMethod");
}
}
public class MyDerivedClass : MyClass
{
public new void MyMethod()
{
Console.WriteLine("MyDerivedClass.MyMethod");
}
}
public class Program
{
public static void Main()
{
Type type = typeof(MyDerivedClass);
MethodInfo methodInfo = type.GetMethod("MyMethod");
bool isSetPropertyMethod = methodInfo.IsSpecialName && methodInfo.Name.StartsWith("set_");
bool isFromBaseClass = methodInfo.DeclaringType != type;
if (!isSetPropertyMethod && !isFromBaseClass)
{
Console.WriteLine("The method is neither a set property method nor from the base class.");
}
else
{
Console.WriteLine("The method is either a set property method or from the base class.");
}
}
}
在这个示例中,我们定义了一个基类MyClass和一个派生类MyDerivedClass,它们都有一个名为MyMethod的方法。通过反射获取MyDerivedClass的MyMethod方法的MethodInfo对象,并使用IsSpecialName属性和DeclaringType属性进行判断。最后根据判断结果输出相应的信息。
请注意,这个示例只是演示了如何使用.NET反射判断方法是否不是set属性,也不是来自基类,并不涉及云计算或其他相关领域的内容。
领取专属 10元无门槛券
手把手带您无忧上云