castle windsor - How to register an interface for interceptions -


i want register interface like: iinterceptingaware, classes implement interface interceptor class used.

public class interceptorclass : iinterceptor {  public void intercept(iinvocation invocation)  {      // work  } }  public class foo : iinterceptingaware { }  public class bar : iinterceptingaware { } 

how setup castle windsor this?

using (var container = new windsorcontainer()) {     container.register(         component.for<myinterceptorclass>(),         classes.fromthisassembly()             .basedon<iinterceptingaware>()             .withservicedefaultinterfaces()             .configurefor<iinterceptingaware>(c => c.interceptors<myinterceptorclass>())         );      var foo = container.resolve<foo>();     foo.test();      var bar = container.resolve<ibar>();     bar.test(); }  console.readline(); 

keep in mind interceptor requires @ least virtual methods on target class, better target class should implement interface in order have interceptor working on contract.

said so, foo class should @ least have method named test marked virtual while bar should implement ibar:

public interface ibar {     void test(); } 

Comments

Popular posts from this blog

javascript - RequestAnimationFrame not working when exiting fullscreen switching space on Safari -

Python ctypes access violation with const pointer arguments -