Autofac + Castello DynamicProxy: ordine degli intercettori
-
14-12-2019 - |
Domanda
Sto usando il castello DynamicProxy con Autofac. Ho un oggetto per il quale ho creato un proxy e ho due intercettori che agiscono sul proxy, uno per aver registrato un'eccezione e il secondo per alterare il valore di ritorno del metodo. Il codice di registrazione sembra il seguente:
var builder = new ContainerBuilder();
builder.Register(c => c.Resolve<ProxyGenerator>()
.CreateClassProxy<Foo>(
c.Resolve<ResultProcessorInterceptor>(),
c.Resolve<ExceptionLoggingInterceptor>()))
.As<Foo>();
.
Fornendo gli argomenti in questo ordine, sto cercando che ottengo il risultato che voglio, I.e., l'eccezione è registrata e il risultato viene elaborato. Se invertire l'ordine degli argomenti, la registrazione non si verifica.
La mia domanda, quindi: registrata in questo modo, gli intercettori sono garantiti per eseguire nello stesso ordine ogni volta? O c'è un modo migliore per garantire che l'ordine sia ciò che intendo ogni volta?
fwiw, ho guardato l'interfaccia IinterceptCetorSelector. Forse mi manca qualcosa - che non è improbabile, ma sembrava che non sia stato rilevante in questo caso. Ma sarei felice di essere corretto se sbaglio.
Posso fornire un campione di codice più lungo se necessario.
Musicologio
Soluzione
Sì, gli intercettori saranno di default eseguiti nell'ordine fornito per ogni metodo intercettato.
Come notato correttamente, è possibile sovrascriverlo su base per metodo utilizzando IInterceptorSelector
se necessario.