Ограничение использования атрибутов только для открытых и защищенных переменных c # - PullRequest
4 голосов
/ 09 июля 2009

Можно ли ограничить использование атрибута только защищенными и общедоступными переменными. Я просто хочу ограничиться частными переменными.

Ответы [ 3 ]

8 голосов
/ 09 июля 2009

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

[AttributeUsage(AttributeTargets.Method)]
public class MethodOnlyAttribute : Attribute { 
}
5 голосов
/ 04 августа 2010

Вы можете сделать это с помощью PostSharp , вот пример поля, которое может быть применено только к общедоступному или защищенному полю:

[Serializable]
[AttributeUsage(AttributeTargets.Field)]
public class MyAttribute : OnFieldAccessAspect
{
    public override bool CompileTimeValidate(System.Reflection.FieldInfo field)
    {
        if (field.IsPublic || field.IsFamily)
        {
            throw new Exception("Attribute can only be applied to Public or Protected fields");
        }

        return true;
    }
}
4 голосов
/ 09 июля 2009

Насколько я знаю, вы не можете. Перечисление AttributeTargets перечисляет, к каким элементам приложения вы можете ограничить использование атрибутов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...