AttributeUsage (AttributeTargets.Property) - есть ли способ указать черный / белый список для типа свойства? - PullRequest
1 голос
/ 28 октября 2011

У меня есть пользовательский атрибут, определенный как System.AttributeUsage (AttributeTargets.Property). Я хочу, чтобы компилятор выдавал ошибку компиляции, когда разработчик добавляет атрибут к свойству, которое НЕ является классом. Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 29 октября 2011

Не надейтесь, но вы могли бы вызвать пользовательскую ошибку компилятора, используя что-то вроде Microsoft Code Contracts или FxCop:

Code Contracts:http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx

FxCop:http://msdn.microsoft.com/en-us/library/bb429476(v=vs.80).aspx

Вы также можете взглянуть на Spec #:http://research.microsoft.com/en-us/projects/specsharp/

0 голосов
/ 28 октября 2011

Нет, ничего подобного нет.

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

Проверка во время компиляции лучше, когда это возможно, но проверка с помощью тестов лучше, чем ничего:)

...