English 中文(简体)
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 interface 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.





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签