c#反射获取注解属性
时间: 2023-10-16 13:21:45 浏览: 134
C#中可以使用反射来获取带有注解的属性。注解属性可以通过Attribute类的派生类来定义和使用。下面是一个获取注解属性的示例:
假设有以下定义的注解属性:
```csharp
[AttributeUsage(AttributeTargets.Property)]
public class MyAttribute : Attribute
{
public string Name { get; set; }
public MyAttribute(string name)
{
Name = name;
}
}
```
有以下定义的类:
```csharp
public class MyClass
{
[MyAttribute("属性1")]
public string Property1 { get; set; }
[MyAttribute("属性2")]
public string Property2 { get; set; }
}
```
可以使用反射来获取注解属性信息:
```csharp
MyClass myClass = new MyClass();
Type type = myClass.GetType();
PropertyInfo[] properties = type.GetProperties();
foreach (PropertyInfo property in properties)
{
MyAttribute myAttribute = (MyAttribute)Attribute.GetCustomAttribute(property, typeof(MyAttribute));
if (myAttribute != null)
{
Console.WriteLine($"属性名称:{property.Name},注解名称:{myAttribute.Name}");
}
}
```
在上面的示例中,我们使用了Type.GetProperties()方法来获取MyClass类的属性信息,然后使用Attribute.GetCustomAttribute()方法来获取带有MyAttribute注解的属性信息,并输出了属性名称和注解名称。
需要注意的是,Attribute.GetCustomAttribute()方法返回的是一个Attribute类型的对象,需要进行强制类型转换才能获取到注解属性的具体信息。
阅读全文