Nella mia applicazione ho usato in precedenza attributi C# regolari per "annotare" un metodo. Es .:Aspetti multipli su un metodo
[Foo(SomeKey="A", SomeValue="3")]
[Foo(SomeKey="B", SomeValue="4")]
public void TheMethod()
{
SpecialAttributeLogicHere();
}
Che SpecialAttributeLogicHere() ha fatto, è stato a guardare riflessivo a tutti i Foo-attributi che annotati questo particolare metodo. Sarebbe quindi (da solo), creare il proprio dizionario per tutte le chiavi e valori.
Ora sto cercando di passare a PostSharp, perché lo SpecialAttributeLogic potrebbe essere messo in un aspetto (e rimosso dal corpo del metodo che è molto più pulito!), All'interno di OnEntry. Foo sarà sostituito da un aspetto che estende OnMethodBoundaryAspect.
mi piace ancora di utilizzare nel modo seguente:
[Foo(SomeKey="A", SomeValue="3")]
[Foo(SomeKey="B", SomeValue="4")]
Ma se Foo ha un OnEntry, che significa che il "SpecialAttributeLogic" verrà eseguito due volte. Fondamentalmente ho bisogno di "raccogliere" tutte le chiavi e i valori da ogni Foo(), in un dizionario, al quale poi applicherò qualche logica.
Come fare questo (o best practice) con PostSharp? Grazie!
aggiunto un esempio di lavoro nella mia risposta di seguito. –