2009-09-16 13 views
5

私のレイヤーがクライアントとサーバーの間に置かれるデザインを実装しています。サーバーから取得するオブジェクトは透明なプロキシでラップし、クライアントに与えます。オブジェクト内で何が変更されたかを追跡します。したがって、保存するときは、変更された情報のみを送信します。城の動的プロキシの作成

私は城の動的プロキシlinfuを見ましたが、プロキシタイプを生成することはできますが、既存のオブジェクトを取り込んでラップすることはできません。

あなたがその心に留めておくために持っているが、これを可能にする任意の他のフレームワークのこれらのフレームワークで行うことが可能、またはそこにもしあれば疑問に思う...

答えて

4

城動的プロキシ3.xまたは後には、それを行うことができますがそれは完全な抽象ではないので、仮想メソッドを傍受することしかできません。

+0

関連するメソッドは ''に「WithTarget」で終わりますProxyGenerator''クラス、例えば'CreateClassProxyTypeWithTarget' – Nathan

5

私たちはステートレスエンティティを使用していますが、ASP.NET GridViewの動作により、既存のオブジェクトをラップするだけのプロキシを作成する必要がありました。

私はターゲット・インスタンスを保持しますインターセプタこのように作成:次に、あなたは、単にラッパープロキシを作成することができます

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

を:

this.proxyGenerator.CreateClassProxy(type, new ForwardingInterceptor(type, target)); 
関連する問題