C # AttributeUsage для определенного класса - PullRequest
9 голосов
/ 18 сентября 2009

Возможно ли иметь что-то вроде AttributeUsage, чтобы ограничить использование атрибута классом * (не только AttributeTargets.Class - это будет любой класс)?

Ответы [ 3 ]

14 голосов
/ 04 августа 2010

Один из способов сделать это, если у вас есть доступ к определенному классу, подробно описан Марком Гравелом здесь: http://marcgravell.blogspot.com/2009/06/restricting-attribute-usage.html. По сути, вы реализуете атрибут как защищенный класс определенного типа. Тогда он может использоваться только этим типом.

11 голосов
/ 18 сентября 2009

Нет. В рамках нет ничего, что могло бы сделать это.

Однако код, который использует рассматриваемый атрибут, всегда может проверить, чтобы убедиться, что тип класса является конкретным классом (или одним из его подклассов).

Атрибуты сами по себе ничего не делают - так что это должно иметь тот же эффект.

0 голосов
/ 18 сентября 2009

Сделайте все данные в Атрибуте доступными только для открытого статического метода, который берет интересующий вас класс и проверяет, имеет ли он заданный атрибут.

...