从基类调用 GetCustomAttributes 的方法是通过反射。在 C# 中,可以使用 System.Reflection
命名空间中的 GetCustomAttributes
方法来获取自定义属性。以下是一个简单的示例:
using System;
using System.Reflection;
// 自定义属性
public class CustomAttribute : Attribute
{
public string Value { get; set; }
}
// 基类
public class BaseClass
{
[CustomAttribute(Value = "Base Class")]
public virtual void Method()
{
Console.WriteLine("Base Class Method");
}
}
// 派生类
public class DerivedClass : BaseClass
{
[CustomAttribute(Value = "Derived Class")]
public override void Method()
{
Console.WriteLine("Derived Class Method");
}
}
public class Program
{
public static void Main(string[] args)
{
// 获取派生类的 Method 方法
MethodInfo methodInfo = typeof(DerivedClass).GetMethod("Method");
// 获取基类的 Method 方法
MethodInfo baseMethodInfo = methodInfo.GetBaseDefinition();
// 获取基类的自定义属性
object[] baseAttributes = baseMethodInfo.GetCustomAttributes(typeof(CustomAttribute), true);
// 输出基类的自定义属性
foreach (CustomAttribute attribute in baseAttributes)
{
Console.WriteLine($"Base Class Attribute Value: {attribute.Value}");
}
}
}
在这个示例中,我们定义了一个自定义属性 CustomAttribute
,并在基类和派生类的 Method
方法上使用了这个属性。然后,我们通过反射获取了派生类的 Method
方法,并使用 GetBaseDefinition
方法获取了基类的 Method
方法。最后,我们使用 GetCustomAttributes
方法获取了基类的自定义属性,并输出了它们的值。
小程序云开发官方直播课(应用开发实战)
云+社区技术沙龙[第3期]
云+社区技术沙龙[第1期]
腾讯位置服务技术沙龙
云+社区开发者大会(苏州站)
技术创作101训练营
技术创作101训练营
云+社区技术沙龙[第25期]
领取专属 10元无门槛券
手把手带您无忧上云