Укажите необходимый базовый класс для целевых объектов атрибутов .NET
Я попытался создать собственный атрибут .NET с кодом ниже, но случайно остановил подкласс. Это привело к легко исправляемой ошибке компилятора, показанной в комментарии.
// results in compiler error CS0641: Attribute 'AttributeUsage' is
// only valid on classes derived from System.Attribute
[AttributeUsage(AttributeTargets.Class)]
internal class ToolDeclarationAttribute
{
internal ToolDeclarationAttribute()
{
}
}
Мой вопрос: как компилятор узнает[AttributeUsage]
атрибут может быть применен только к подклассуSystem.Attribute
? Используя .NET Reflector, я не вижу ничего особенного наAttributeUsageAttribute
Само объявление класса. К сожалению, это может быть просто особый случай, сгенерированный самим компилятором.
[Serializable, ComVisible(true), AttributeUsage(AttributeTargets.Class, Inherited=true)]
public sealed class AttributeUsageAttribute : Attribute
{
...
Я хотел бы иметь возможность указать, что мой пользовательский атрибут может быть помещен только в подклассы определенного класса (или интерфейса). Это возможно?