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

C# 仅限制公共和受保护变量c的属性用法#,c#,attributes,C#,Attributes,是否可以将属性的使用限制为仅受保护的和公共的变量。我只想限制到私有变量。不,你不能这样做。您可以仅根据目标的类型限制属性的使用,而不是其他任何内容 [AttributeUsage(AttributeTargets.Method)] public class MethodOnlyAttribute : Attribute { } 据我所知,你不能。枚举列出了您可以将属性用法约束到的应用程序元素。您可以使用,下面是一个只能应用于公共或受保护字段的字段示例: [Serializable] [Att

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

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

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

据我所知,你不能。枚举列出了您可以将属性用法约束到的应用程序元素。

您可以使用,下面是一个只能应用于公共或受保护字段的字段示例:

[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;
    }
}

正如Mehrdad解释的,你不能那样做。您能告诉我们为什么要以这种方式限制属性吗?你能告诉我们你的用例吗?