AttributeUsage (AttributeTargets.Property) - Чи є спосіб вказати чорний/білий список для Тип власності?

У мене є власний атрибут, визначений як System.AttributeUsage (AttributeTargets.Property). Я хочу, щоб компілятор викидав помилку компіляції, коли розробник додає атрибут до властивості, що не є класом. Чи є якийсь спосіб зробити це?

1
Довга відповідь: ні, ні.
додано Автор Hans Passant, джерело
Коротка відповідь: ні.
додано Автор CodeNaked, джерело

2 Відповіді

Ні, нічого подібного немає.

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

Перевірка часу компіляції найкраще, коли це можливо, але перевірка з тестами краще, ніж нічого :)

0
додано
Я працюю над рамкою, яку використовують інші розробники, тому я шукав рішення, яке працює під час компіляції. Ну, може, це щось, що може додати МС.
додано Автор Paul Rivera, джерело
@PaulRivera: Звучить малоймовірно - є багато речей, які, хоча корисні для кількох людей, додадуть складність для всіх . Я пропоную вам включити тестову збірку, що дозволяє дуже легко випробувати їх самі.
додано Автор Jon Skeet, джерело

Не сподівайтеся, але ви можете змусити користувачеві помилку на копіювання, використовуючи щось подібне до Кодексу контрактів Microsoft або 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

You might also take a look at Spec#:
http://research.microsoft.com/en-us/projects/specsharp/

0
додано
var chat = new Chat();
var chat = new Chat();
642 учасників

Обсуждение вопросов по C# / .NET / .NET Core / .NET Standard / Azure Сообщества-организаторы: — @itkpi — @dncuug