C# 拦截器获取特性上的注释
时间: 2023-10-19 15:23:57 浏览: 81
可以使用反射获取特性上的注释。具体步骤如下:
1. 获取特性对象。
2. 获取特性类型。
3. 使用特性类型的`GetProperties()`方法获取特性的所有属性。
4. 遍历每个属性,使用`GetProperty()`方法获取属性对象。
5. 判断属性对象是否为`Description`属性,如果是则获取该属性的值。
以下是示例代码:
```csharp
public static string GetDescriptionFromAttribute(object attribute)
{
var attributeType = attribute.GetType();
var properties = attributeType.GetProperties();
foreach (var property in properties)
{
if (property.Name == "Description")
{
var value = property.GetValue(attribute);
if (value != null)
{
return value.ToString();
}
}
}
return null;
}
```
使用示例:
```csharp
[MyAttribute(Description = "This is a description")]
public class MyClass
{
// ...
}
var myClass = new MyClass();
var myAttribute = myClass.GetType().GetCustomAttributes(typeof(MyAttribute), true).FirstOrDefault();
if (myAttribute != null)
{
var description = GetDescriptionFromAttribute(myAttribute);
Console.WriteLine(description); // Output: "This is a description"
}
```
阅读全文