开发者

Unity IOC, AOP & Interface Interception

I've been playing around with Unity to do some AOP stuff, setting up via IOC like:

ioc.RegisterType<ICustomerService, CustomerService>()
    .Configure<Interception>().SetInterceptorFor<ICustomerService>(new InterfaceInterceptor());

... and then having an ICallHandler on the ICustomerService interf开发者_StackOverflow社区ace's methods. For teh time being i want to just get the method called, the class it's in, and the namespace for that class. So... inside the...

public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext) 

...method of the ICallHandler, i can access the method name via input.MethodBase.Name... if i use input.MethodBase.DeclaringType.Name i get the interface ICustomerService... BUT... how would i go about getting the implementing class "CustomerService" rather than the interface?

I've been told to use input.Target.. but that just returns "DynamicModule.ns.Wrapped_ICustomerService_4f2242e5e00640ab84e4bc9e05ba0a13"

Any help on this folks?


I've tried to do something similar some time ago, I've done some research through Unity source code and the only solution I came up with was to get CustomerService instance by reflection from private field of input.Target (I don't remember its name, you can find it in debugger easily). I know this is not an elegant and maintanable solution, but it looks like this is all we can do.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜