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 cli
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));