próbuję założyć aspekt PostSharp RunOutOfProcessAttribute
tak, że stosuje się do:Zastosuj aspekt wyłącznie do metod, które mają konkretny atrybut
- wszystkich publicznych metod
- Każda metoda oznaczona
DoSpecialFunctionAttribute
, niezależnie od dostępności członków (publiczne/chronione/prywatne/cokolwiek).
tej pory mój RunOutOfProcessAttribute
definiuje thusly:
[Serializable]
[MulticastAttributeUsage(MulticastTargets.Method, TargetMemberAttributes = MulticastAttributes.Public)]
[AttributeUsage(AttributeTargets.Class)]
public class RunOutOfProcessAttribute : MethodInterceptionAspect
{
public override void OnInvoke(MethodInterceptionArgs args)
{
...
}
}
MulticastAttributeUsageAttribute
już na miejscu powinny spełniać kryterium 1 powyżej, ale nie mam pojęcia jak do spełnienia kryterium 2, bez prostu powielenie zachowanie istniejącego aspektu w nowy atrybut.
Jak uzyskać ten aspekt w odniesieniu do dowolnej metody oznaczonej symbolem DoSpecialFunctionAttribute
, niezależnie od dostępności elementu (publiczny/chroniony/prywatny/cokolwiek)?
im mylić, dlaczego jest to konieczne. Jeśli już masz zamiar mieć atrybut 'DoSpecialFunctionAttribute', dlaczego nie po prostu włączysz do tego funkcję? zamiast tworzyć jeszcze KOLEJNY aspekt. – caesay
Chcę móc umieścić 'RunOutOfProcessAttribute' na klasie, ponieważ bardziej definiuje zachowanie klasy niż zachowanie metody. 'RunOutOfProcessAttribute' powinien działać na * wszystkich * publicznych metodach klasy, oprócz każdego chronionego oznaczonego' DoSpecialFunctionAttribute'. 'DoSpecialFunctionAttribute' nie będzie aspektem. –