Проверка того, что пользовательский атрибут назначен не статическому члену класса - PullRequest
1 голос
/ 07 августа 2009

Мне нужно создать пользовательский атрибут, который применим только для нестатического члена класса. Как я могу проверить это ограничение при компиляции проекта или использовании инструментов анализа кода?

Ответы [ 3 ]

2 голосов
/ 07 августа 2009
0 голосов
/ 20 июля 2010

Это, вероятно, не то, что вы ищете, но с помощью PostSharp можно создать такой атрибут, у вас, вероятно, будет что-то вроде этого:

[Serializable]
public sealed class StaticAttribute : OnMethodBoundaryAspect
{
    public override bool CompileTimeValidate(System.Reflection.MethodBase method)
    {
        return method.IsStatic;
    }

OnMethodBoundaryAspect в основном оборачивает ваш метод внутри блока try / catch, а метод CompileTimeValidate определяет, будет ли атрибут вызываться во время выполнения.

0 голосов
/ 07 августа 2009

Вы всегда можете написать какое-нибудь событие после сборки, которое использует отражение, чтобы проверить это ... Конечно, это может быть не самое элегантное из решений ....

Чтобы настроить это, вы должны войти в свойства проекта, затем на вкладку «Build Events». Затем вы должны ввести командную строку для инструмента на основе отражения, который вы напишите для реализации этой проверки

...