Especifique a classe base necessária para os alvos de atributo do .NET
Eu tentei criar um atributo .NET personalizado com o código abaixo, mas acidentalmente deixou a subclasse. Isso gerou um erro do compilador facilmente corrigido mostrado no comentário.
// results in compiler error CS0641: Attribute 'AttributeUsage' is
// only valid on classes derived from System.Attribute
[AttributeUsage(AttributeTargets.Class)]
internal class ToolDeclarationAttribute
{
internal ToolDeclarationAttribute()
{
}
}
Minha pergunta é como o compilador conhece o[AttributeUsage]
atributo só pode ser aplicado a uma subclasse deSystem.Attribute
? Usando o .NET Reflector Eu não vejo nada de especial noAttributeUsageAttribute
declaração de classe em si. Infelizmente isso pode ser apenas um caso especial gerado pelo próprio compilador.
[Serializable, ComVisible(true), AttributeUsage(AttributeTargets.Class, Inherited=true)]
public sealed class AttributeUsageAttribute : Attribute
{
...
Eu gostaria de poder especificar que meu atributo personalizado só pode ser colocado em subclasses de uma determinada classe (ou interface). Isso é possível?