Compiler Error CS0592
特性“attribute”对此声明类型无效。它只对“type”声明有效。
在定义特性时,可通过指定 AttributeTargets 值来定义可将该特性应用于什么构造。在下面的示例中,MyAttribute 特性只能应用于接口,因为 AttributeUsage 特性指定 AttributeTargets.Iterface。之所以会生成错误,原因是该特性应用于类(类 A)。
下面的示例生成 CS0592:
// CS0592.cs
using System;
[AttributeUsage(AttributeTargets.Interface)]
public class MyAttribute : Attribute
{
}
[MyAttribute]
// Generates CS0592 because MyAttribute is not valid for a class.
public class A
{
public static void Main()
{
}
}