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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top