不,你做不到.您可以仅根据目标的类型限制属性使用,而不是其他任何内容.
[AttributeUsage(AttributeTargets.Method)]
public class MethodOnlyAttribute : Attribute {
}
Run Code Online (Sandbox Code Playgroud)
您可以使用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;
}
}
Run Code Online (Sandbox Code Playgroud)