限制公共和受保护变量的属性用法c#

时间:2009-07-08 23:41:35

标签: c# attributes

是否可以将属性使用限制为仅受保护和公共变量。我只想限制私有变量。

3 个答案:

答案 0 :(得分:8)

不,你不能这样做。您可以仅根据目标类型限制属性使用,而不是其他任何内容。

[AttributeUsage(AttributeTargets.Method)]
public class MethodOnlyAttribute : Attribute { 
}

答案 1 :(得分:5)

您可以使用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;
    }
}

答案 2 :(得分:4)

据我所知,你做不到。 AttributeTargets枚举列出了可以将属性使用限制为的应用程序元素。