2009-07-08 5 views

Antwort

7

Nein, das geht nicht. Sie können die Verwendung von Attributen nur basierend auf dem Typ des Ziels beschränken, nicht auf anderen.

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

Nach meinem besten Wissen können Sie nicht. Die AttributeTargets Aufzählung listet auf welche Anwendungselemente Sie die Attributverwendung beschränken können.

5

du mit PostSharp tun können, hier ist ein Beispiel für ein Feld, das nur zu einem öffentlichen oder geschützten Bereich angewendet werden kann:

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