Pregunta

Estoy usando Castle DynamicProxy con AutoFac. Tengo un objeto para el cual he creado un proxy, y tengo dos interceptores que actúan sobre el proxy, uno para registrar una excepción y el segundo para alterar el valor de retorno del método. El código de registro se parece a lo siguiente:

var builder = new ContainerBuilder();

builder.Register(c => c.Resolve<ProxyGenerator>()
    .CreateClassProxy<Foo>(
        c.Resolve<ResultProcessorInterceptor>(),
        c.Resolve<ExceptionLoggingInterceptor>()))
    .As<Foo>();

Al suministrar los argumentos en este orden, estoy descubriendo que obtengo el resultado que quiero, es decir, la excepción se registra y el resultado se procesa. Si invoco el orden de los argumentos, el registro no se produce.

Mi pregunta, entonces: Registrado de esta manera, ¿se garantizan los interceptores que se ejecutan en el mismo orden cada vez? ¿O hay una mejor manera de asegurarse de que el pedido sea lo que pretendo cada vez?

FWIW, miré la interfaz iIntepteptselector. Tal vez me esté perdiendo algo, lo que no es poco probable, pero parecía que eso no era relevante en este caso. Pero me alegraría de ser corregido si me equivoco.

Puedo proporcionar una muestra de código más larga si es necesario.

Musicologyman

¿Fue útil?

Solución

Sí, los interceptores se realizarán de forma predeterminada ejecutada en el orden proporcionado para cada método interceptado.

Como señaló correctamente, puede anularlo por método utilizando IInterceptorSelector si es necesario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top