c# GetCustomAttributes()参数含义
时间: 2024-02-20 09:58:15 浏览: 157
`GetCustomAttributes()` 方法有两个参数,它们的含义如下:
1. `type`: 指定要获取的自定义属性的类型。可以传递 `typeof()`,表示获取所有自定义属性;或者传递一个具体的自定义属性类型,表示只获取这个类型的自定义属性。
2. `inherit`: 指定是否搜索继承链来获取自定义属性。如果为 true,则搜索继承链;否则只搜索当前类型。
例如,下面是一个示例:
```csharp
[MyAttribute("Test")]
class MyBaseClass { }
class MyClass : MyBaseClass { }
class Program
{
static void Main(string[] args)
{
var myAttribute1 = (MyAttribute)Attribute.GetCustomAttribute(typeof(MyBaseClass), typeof(MyAttribute), false);
Console.WriteLine(myAttribute1?.Name); // Output: Test
var myAttribute2 = (MyAttribute)Attribute.GetCustomAttribute(typeof(MyClass), typeof(MyAttribute), false);
Console.WriteLine(myAttribute2?.Name); // Output: null
var myAttribute3 = (MyAttribute)Attribute.GetCustomAttribute(typeof(MyClass), typeof(MyAttribute), true);
Console.WriteLine(myAttribute3?.Name); // Output: Test
}
}
[AttributeUsage(AttributeTargets.Class)]
public class MyAttribute : Attribute
{
public string Name { get; set; }
public MyAttribute(string name)
{
Name = name;
}
}
```
在上面的示例中,我们定义了一个 `MyAttribute` 类来表示一个自定义属性。我们在 `MyBaseClass` 类上应用了这个自定义属性,然后 `MyClass` 类继承自 `MyBaseClass` 类。在 `Main` 方法中,我们使用 `GetCustomAttributes()` 方法来获取 `MyBaseClass` 类和 `MyClass` 类上的 `MyAttribute` 自定义属性,分别传递不同的 `inherit` 参数。最终输出结果为 `Test` 和 `null`,因为在 `MyClass` 类上没有直接应用 `MyAttribute` 自定义属性,只有通过继承间接应用了这个自定义属性。
阅读全文