En mi aplicación, utilicé previamente atributos de C# regulares para "anotar" un método. Ej .:Aspectos múltiples en un método
[Foo(SomeKey="A", SomeValue="3")]
[Foo(SomeKey="B", SomeValue="4")]
public void TheMethod()
{
SpecialAttributeLogicHere();
}
Lo SpecialAttributeLogicHere() lo hizo, fue a mirar reflexivamente en todos los Foo-atributos que anotados este método en particular. Entonces (por sí solo), creará su propio diccionario para todas las claves y valores.
Ahora estoy tratando de pasar a PostSharp, porque SpecialAttributeLogic podría ponerse en un aspecto (y eliminarse del cuerpo del método que es mucho más limpio!) Dentro de OnEntry. Foo será reemplazado por un aspecto que amplía OnMethodBoundaryAspect.
todavía me gustaría que utilice de la siguiente manera:
[Foo(SomeKey="A", SomeValue="3")]
[Foo(SomeKey="B", SomeValue="4")]
Pero si Foo tiene un OnEntry, eso significa que el "SpecialAttributeLogic" se ejecutará dos veces. Básicamente necesito "reunir" todas las claves y valores de cada Foo(), en un diccionario, y luego aplicaré un poco de lógica.
¿Cómo hacer esto (o mejores prácticas) con PostSharp? ¡Gracias!
ejemplo de trabajo agregado en mi respuesta a continuación. –