問題タブ [dynamic-proxy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
139 参照

c# - Spring.Netを使用してCOMインターフェイスをプロキシすることは可能ですか?

COMインターフェイスにSpring.NETとC#を使用して動的プロキシを作成しようとしています。私は現在、設定ファイルではなくコードを使用して実験しています。私は次のようなコードを持っています:

次の例外を除いて、GetProxy()呼び出しで爆発します。

これは単に不可能ですか?私はまだSpring.NET1.1を使用していますが、これは新しいバージョンで可能ですか(これはまもなく移行されます)?

更新:実験した後、Formクラスをプロキシするときにも、わずかに異なるパラメーター(つまり、UnmanagedType 44)で同じエラーが発生しました。

0 投票する
5 に答える
14657 参照

java - Javaでインターフェースのプロキシを作成するには?

インターフェイスを実装するクラスを作成せずに、インターフェイスのプロキシを作成するにはどうすればよいですか?

具体的な例があります。Contact インターフェイスがあり、Contact として機能するプロキシ オブジェクトを作成する必要があります。このプロキシ オブジェクトは、一部の TestNG テストの実行に使用されます。

私は JDK アプローチを使用してみましたが、そのインターフェースの実際の実装を必要とする例しか見つけることができませんでした。

また、jassist がこの問題に役立つ可能性があることもわかり、メモリ不足エラーが発生するまで機能しているように見える簡単な例を実装しようとしました。ここに私がやっていることのスニペットがあります:

createMock() メソッドのパラメーターはインターフェースになることに注意してください。

ありがとう

0 投票する
1 に答える
107 参照

c# - インターフェイスプロキシの生成

クラスの問題に遭遇しました。次のようなクラスがあります。

カスタムビューは、ベースIViewインスタンスから継承します。IMyViewまたはISomeView(シナリオによって異なります)を実装するカスタムクラスをその場で作成してモデルにアクセスする必要がある状況に遭遇し、CastleDynamicProxyなどのツールを使用してそれを実行できると考えていました。しかし、どこから始めればよいのかよくわかりません。カスタムIMyViewまたは他のクラスインスタンスをその場で作成できる必要があります。

ありがとう。

0 投票する
2 に答える
2330 参照

java - プロキシ パターンとオーバーライド

インターフェース Subject があるとします。

RealSubject クラスがあります。RealSubject を強化したい場合、RealSubject をラップするプロキシ パターンを使用できます。

または、RealSubject を拡張してメソッドをオーバーライドすることもできます

どちらのアプローチが優れていますか? 私はリスコフの原理を知っています。EnhancedSubject が Liskov 原則を満たしているとしましょう。あなたはまだ継承を考えていますか?

サブジェクト インターフェイスがない場合 (つまり、RealSubject がインターフェイスを実装していない場合)、プロキシ パターンに実装するインターフェイスがないため、「継承とオーバーライド」が唯一のオプションのようです。サブジェクト インターフェイスがない場合でもプロキシ パターンを適用できますか?

0 投票する
3 に答える
1469 参照

java - 2つのインターフェイスを備えたSpring動的プロキシを使用するにはどうすればよいですか?

Springによってクラスに注入されるオブジェクトがあります(気になる場合はJdbcCursorItemReader )。

それは5つのインターフェースを実装し、そのうちの2つは私が気にしています(ItemReader、ItemStream)。クラスをどちらかにコーディングすると、Spring Dynamic Proxyが適切に挿入され、その上でメソッドを呼び出すことができます。

かっこいい、それは期待通りに機能します。ItemStreamインターフェイスに基づいて何かを実行したい場合は、ItemStreamにキャストすることもできます。

かっこいい、両方のクラスのメソッドにアクセスできます。しかし、私はキャスティングのファンではなく、それを行うためのより良いスプリングマジックの方法がどこにあるべきかを知っています。私が考えた方法は、両方を組み合わせたインターフェイスを作成することでした。

これにより、私のコードは両方を使用できるようになります...しかし、プロキシインジェクションは予想通り失敗します。

タイプ[$Proxy0実装org.springframework.beans.factory.InitializingBean、org.springframework.batch.item.ItemReader、org.springframework.batch.item.ItemStream、org.springframework.aop.scope.ScopedObjectのプロパティ値の変換に失敗しました、org.springframework.aop.framework.AopInfrastructureBean、org.springframework.aop.SpringProxy、org.springframework.aop.framework.Advised]プロパティ'itemReader'に必要なタイプ[blah.IStreamingItemReader]に; ネストされた例外はjava.lang.IllegalArgumentExceptionです。タイプ[$Proxy0の値を変換できません。org.springframework.beans.factory.InitializingBean、org.springframework.batch.item.ItemReader、org.springframework.batch.item.ItemStream、orgを実装しています。 springframework.aop.scope.ScopedObject、org.springframework.aop.framework.AopInfrastructureBean、org.springframework.aop.SpringProxy、org。

私の目を引いた のは、一致するエディターや変換戦略が見つからなかったことです。

SpringがJdbcCursorItemReaderを見つけたときに、 IStreamingItemReaderのプロキシを作成するように教える方法はありますか?

CGLibとクラスベースのプロキシでこれを修正できることに気づきました...しかし、これを動的インターフェイスプロキシとして維持できれば、もっと幸せになるでしょう...

0 投票する
3 に答える
11819 参照

java - 動的プロキシから元のオブジェクトをアンラップする方法

動的プロキシをアンラップして元のオブジェクトを取得するための最良の方法は何ですか? 動的プロキシは次を使用して作成されましたjava.lang.reflect.Proxy.newProxyInstance()

ありがとうございました。

0 投票する
3 に答える
7826 参照

java - JDK 動的プロキシがインターフェイスでのみ機能するのはなぜですか?

JDK Proxy クラスは、ファクトリ メソッド newProxyInstance() のインターフェイスのみを受け入れます。

利用可能な回避策、または代替の実装はありますか? メソッドをプロキシで使用できるようにするためにメソッドをインターフェイスに抽出する必要がある場合、使用例は限られます。実行時に注釈ベースのアクションを適用するためにそれらをラップしたいと思います。

0 投票する
0 に答える
1151 参照

c# - ネットワーク経由で固定サイズのバッチを使用して.NET IEnumerableをプロキシリモートする方法は?

.NET リモート処理は、次のようなシリアル化可能なメンバーを持つインターフェイスの透過的なプロキシ リモートを生成できます。

IEnumerator<T>返された結果に対して、カスタムシリアライザーとアクティブなプロキシーリモートを提供したいと思います。私のカスタム プロキシ リモートは、ネットワーク経由で一度に特定の数の要素のバッチ処理を処理します。たとえば、次のインターフェイスがあるとします。

IEnumerator<T> where T:ISerializableリモート インターフェイスに が表示されるたびに自動的に使用されるカスタム シリアライザーとプロキシを提供したいと思います。サーバー側への .NET リモート プロキシを持つIEnumerator<string>クライアント側にシリアル化します。EnumeratorBatchHandlerClient<string>EnumeratorBatchHandlerServer<string>

client-batch-handler は次のようになると思います。

プロキシされたインターフェイスに IEnumerable が表示されたときに、.NET Remoting でカスタム クライアント/サーバーの "ienumerable バッチ プロキシ" を透過的に生成してリンクさせる方法はありますか?

更新:これを行うために私が持っていた巧妙なアイデアの1つはRealProxy、スタブを挿入する作業を行う を構築し、これをリモートクラスの前に貼り付けることでした。クライアント ハンドラーをシリアライズ可能にし、サーバー ハンドラー marshalbyref を作成すると、クライアント ハンドラーが cilent 側に送信され、リモートでサーバー ハンドラーと通信できるようになると考えました。私はそのような RealProxy を構築しEnumeratorClientBatchHandler<>ましEnumeratorServerBatchHandler<>IEnumerator。ただし、同時に のサブクラスになることはできないため、.NET リモート処理を使用して を「リモート」することはRealProxyできません。MarshalByRefObjectRealProxy

私が見ている唯一の方法は、インターフェイスの実装を MarshalByRefObject のサブクラスにする必要のない独自のリモート システムを構築して、それらをリモートでプロキシすることです。RealProxy は任意のインターフェイス タイプをプロキシできるように見えるため、これが不可能な理由はわかりません。(.NET リモート処理のみが、基になる型が MarshalByRefObject であることを確認しています)。副次的な利点として、新しい C# 5.0 非同期システムを使用して、非同期ハンドラーが「標準」インターフェイスにサービスを提供できるようにするリモート システムがあればいいと思います。


以下のこの Q/A はやや関連しているようで、WCF でのカスタム シリアライザー (protobuf) の使用について説明しています。ただし、これはいくつかの点で私が探しているものとは異なります。(1) それでもすべてのデータをバイナリ ストリームにシリアル化します。上記のように、リモート チャネルを介してプロキシ バッチ呼び出しを発行し続けるために必要な「進行中のプロキシ チャネル」はありません。(2) 戻り結果を変換する手動の WCF パターンto EndpointAddress10 は、上記のパターンと互換性がないようです。

.NET リモート処理中にカスタム シリアル化を使用する方法

もちろん、バッチ処理インターフェースであるリモート処理インターフェースを作成し、クライアントにバッチ処理を手動で処理させるか、バッチ処理インターフェースを EnumerableBatchHandlerClient の独自のインスタンスに手動でラップさせることができることはわかっています。特定のシステムを介して多くの多くのインターフェイスを販売する予定であり、IEnumerables は非常に一般的であり、リモーティングを「自動魔法」にしたいので、透過的な方法でこれを行う方法を理解しようとしています。 basic-datatype 呼び出しまたは IEnumerable (バッチ サポートあり) のように見えるもの。

0 投票する
5 に答える
6400 参照

c# - C# で動的プロキシを実装する最良の方法は何ですか?

C# で動的プロキシを作成する必要があります。このクラスで別のクラスをラップし、そのパブリック インターフェイスを使用して、これらの関数の呼び出しを転送する必要があります。

使用方法は次のとおりです。

生産する:

何か案は?

これを行う最も簡単な方法は何ですか?

これを行う最善の方法は何ですか?

本当にありがとう。

アップデート

Wernight の推奨に従い、C# 4.0 動的プロキシを使用してこれを実装しようとしました。残念ながら、私はまだ立ち往生しています。プロキシのポイントは、(通常、通常) 期待される他のインターフェイスを模倣することです。DynamicObject を使用するには、このすべてのクライアントを変更して、「ISecondaryInterface」ではなく「dynamic」を使用する必要があります。

A をラップするときに、A のインターフェイスをサポートしていることを (静的に?) アドバタイズするように、プロキシ オブジェクトを取得する方法はありますか。Bをラップすると、Bのインターフェースをサポートしていることをアドバタイズしますか?

更新 2

例えば:

0 投票する
1 に答える
686 参照

entity-framework-4 - Entity Framework 4キャストオブジェクトを動的プロキシに

EF4 では、POCO オブジェクト (new MyObject() を使用して作成) を動的プロキシ (ObjectContext.CreateObject() で取得するように) に変換できますか?

POCO の T4 テンプレートで EF4 を使用します。