Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

castle dynamic proxy creation

I am implementing a design where my layer would sit between client and server, and whatever objects i get from server, i would wrap it in a transparent proxy and give to the client, that way i can keep a track of what changed in the object, so when saving it back, i would only send changed information.

I looked at castle dynamic proxy, linfu, although they can generate a proxy type, but they cant take existing objects and wrap them instead.

Wondering if its possible to do with these frameworks, or if there any other frameworks that enable this...

like image 934
np-hard Avatar asked Sep 16 '09 14:09

np-hard


1 Answers

We use stateless entities, and due to a behaviour of ASP.NET GridView I needed to create a proxy which would only wrap existing object.

I created an interceptor which keeps a target instance this way:

public class ForwardingInterceptor : IInterceptor
{
    private object target;

    private Type type;

    public ForwardingInterceptor(Type type, object target)
    {
        this.target = target;
    }

    public void Intercept(IInvocation invocation)
    {
        invocation.ReturnValue = invocation.Method.Invoke(this.target, invocation.Arguments);
    }       
}

Then you can simply create the wrapper proxy:

this.proxyGenerator.CreateClassProxy(type, new ForwardingInterceptor(type, target));
like image 199
jirkamat Avatar answered Sep 30 '22 20:09

jirkamat