Sto cercando di creare un aspetto PostSharp RunOutOfProcessAttribute
in modo che essa si applica a:Applicare un aspetto da solo i metodi che hanno un attributo specifico
- tutti i metodi pubblici
- qualsiasi metodo contrassegnata con il
DoSpecialFunctionAttribute
, indipendentemente dall'accessibilità dei membri (pubblico/protetto/privato/qualunque).
Finora, il mio RunOutOfProcessAttribute
è definito così:
[Serializable]
[MulticastAttributeUsage(MulticastTargets.Method, TargetMemberAttributes = MulticastAttributes.Public)]
[AttributeUsage(AttributeTargets.Class)]
public class RunOutOfProcessAttribute : MethodInterceptionAspect
{
public override void OnInvoke(MethodInterceptionArgs args)
{
...
}
}
Il MulticastAttributeUsageAttribute
già in atto dovrebbe soddisfare sopra criterio 1, ma ho idea di come soddisfare il criterio 2, senza semplicemente duplicare la comportamento dell'aspetto esistente in un nuovo attributo.
Come si può applicare questo aspetto a qualsiasi metodo contrassegnato con lo DoSpecialFunctionAttribute
, indipendentemente dall'accessibilità dei membri (pubblico/protetto/privato/altro)?
im confusa sul motivo per cui questo è richiesto. Se hai già un 'DoSpecialFunctionAttribute', perché non includere solo la funzione per farlo in quell'attributo? piuttosto che creare ancora un altro aspetto. – caesay
Voglio essere in grado di mettere 'RunOutOfProcessAttribute' su una classe, in quanto definisce più un comportamento di classe rispetto a un comportamento del metodo. 'RunOutOfProcessAttribute' dovrebbe funzionare su * tutti * i metodi della classe pubblica oltre a quelli protetti contrassegnati con' DoSpecialFunctionAttribute'. 'DoSpecialFunctionAttribute' non sarà un aspetto. –