Возможно ли ограничение атрибутов для класса или свойств? - PullRequest
8 голосов
/ 21 мая 2010

У меня есть два пользовательских атрибута, определенных так:

internal class SchemaAttribute : Attribute {
    internal SchemaAttribute(string schema) {
        Schema = schema;
    }

    internal string Schema { get; private set; }
}

internal class AttributeAttribute : Attribute {
    internal AttributeAttribute(string attribute) {
        Attribute = attribute;
    }

    internal string Attribute { get; private set; }
}

Я хотел бы ограничить атрибут SchemaAttribute классами, а AttributeAttribute - свойствами.

Это выполнимо?

Ответы [ 2 ]

14 голосов
/ 21 мая 2010

Извлечение AttributeUsage и AttributeTargets .

Это будет выглядеть примерно так:

[AttributeUsage(AttributeTargets.Class)]
internal class SchemaAttribute : Attribute
{
    // Implementation
}

[AttributeUsage(AttributeTargets.Property)]
internal class AttributeAttribute : Attribute
{
    // Implementation
}
4 голосов
/ 21 мая 2010

Посмотрите на AttributeTargetAttribute

[AttributeTarget(AttributeTargets.Class)]
internal class SchemaAttribute : Attribute
...

[AttributeTarget(AttributeTargets.Property)]
internal class AttributeAttribute: Attribute
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...