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?

questionAnswers(3)

yourAnswerToTheQuestion