5

クライアントとサーバーの間にレイヤーが配置される設計を実装しており、サーバーから取得したオブジェクトはすべて、透過的なプロキシでラップしてクライアントに渡すことで、オブジェクトの変更内容を追跡できます。 、そのため、保存するときは、変更された情報のみを送信します。

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

これらのフレームワークでそれが可能かどうか、またはこれを可能にする他のフレームワークがあるかどうか疑問に思っています...

4

2 に答える 2

7

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

この方法でターゲットインスタンスを保持するインターセプターを作成しました。

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));
于 2010-05-16T12:27:20.317 に答える
4

Castle Dynamic Proxy 3.x 以降ではそれが可能ですが、仮想メソッドのみをインターセプトできるため、完全な抽象化ではないことに注意する必要があります。

于 2009-12-03T13:20:10.803 に答える