2015-05-29 15 views
5

Sto utilizzando PostSharp Express in VS2013 per creare aspetti di convalida che posso applicare alle mie proprietà. Ho seguito this PostSharp guide on location interception. Tutti funzionano bene, ma io sono sempre centinaia di avvertimenti affermando:Avviso Aspetti in conflitto PostSharp

aspetti

conflitto su "MyNamespace.get_MyProperty": trasformazioni ".MyValidation1Attribute: intercettato da consigli OnGetValue, OnSetValue" e "MyNamespace.Validation2Attribute: intercettato da consiglio OnGetValue, OnSetValue "non sono commutativi, ma non sono fortemente ordinati. Il loro ordine di esecuzione è indeterminato.

Quale penso sia il risultato del posizionamento di più aspetti di convalida sulle stesse proprietà. Per prima cosa ho provato a separare le virgole degli attributi, che a mio avviso dovrebbero ordinarli: [Validation1,Validation2] ma gli avvertimenti rimanevano ancora.

Dato che i miei aspetti sono commutativa (non importa quale ordine vengono eseguiti), the PostSharp docs advise per contrassegnarli come tali utilizzando AspectTypeDependency come segue:

[AspectTypeDependency(AspectDependencyAction.Commute, typeof(ILocationValidationAspect))] 

Tuttavia, sembra che lo spazio dei nomi non è PostSharp.Aspects.Dependencies incluso sotto la licenza Express. C'è qualche soluzione possibile per risolvere questi avvertimenti usando solo la licenza Express? O significa che non potrò mai usare più di un aspetto senza acquistare pro o ultimate? Sarei disposto a provare a implementare il mio controller di dipendenza se potessi rimuovere questi avvertimenti in questo modo.

risposta

5

AspectTypeDependency richiede l'edizione Professional. Ma il tipo AspectTypeDependency dovrebbe essere incluso anche nella versione Express - ci dovrebbe quindi essere l'errore di generazione di build non licenza.

È possibile utilizzare AspectPriority:

[Validation1(AspectPriority = 1), Validation2(AspectPriority = 2)] 

In alternativa è possibile assegnare la priorità nel costruttore aspetto. È molto meno flessibile rispetto all'aspetto ma almeno risolve l'avvertimento.

+0

Grazie, aggiungendo AspectPriority a ogni lavoro di validazione! – Ivan

Problemi correlati