問題タブ [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.
c# - DynamicProxyのインターセプターが*各*仮想メソッド呼び出しに対して呼び出されないのはなぜですか?
例はそれを最もよく説明します:
私は出力を期待していたでしょう:
代わりに、次のようになります。
なんで?
動的プロキシはどのように機能しますか?生成されたプロキシがプロキシされたクラスから継承することを期待していましたが、 compositionを使用して、プロキシされたインターフェイスの各メソッドを実際の実装に委任しているようです。
Castle DynamicProxyと、Cramonの古い動的プロキシ実装を試してみました
c# - パラメータを使用してメソッドをプロキシするときのCastle DynamicProxy v1例外?
Castle DynamicProxy v1.1.5.0 を使用してパラメーターを使用してメソッドをプロキシする際に問題が発生しています。- 「インデックスが配列の範囲外でした」という例外が発生します。
パラメータのないメソッドまたは DynamicProxy v2 のみを使用すると、すべて正常に動作します。
残念ながら、プロジェクトのリーダーに v2 への依存関係を追加するよう説得するのに苦労しています (NHibernate に付属しているため、既に v1 を使用しています)。
だから私の質問は次のようになります:これはv1で行うことができますか? 私はそれを間違って使用していますか?
これが核心です。
基本クラスへのコンパイル時の依存関係を持たずに継承をシミュレートするメカニズムを実装しました。理由は聞かないでください。理由は醜いです:(
これがどのように壊れるかを示す完全な例を次に示します。Castle.DynamicProxy.dll (v1) を参照しています。Castle.DynamicProxy[b]2[/b].dll (+ Castle.Core.dll) への参照を変更する場合は、コードの先頭にある #define のコメントを外します。
長いコードで申し訳ありませんが、重要な詳細を明らかにするのではないかと心配していました...
また: 免責事項: コード サンプルには厄介なバグがいくつかあります。(おそらく、私が見つけたよりも多くのこともあります:)
うわー!それは一口です。v1 を使用する場合に発生する例外は次のとおりです。
v2 で実行すると、正しい出力が得られます。
派生 - ふー!派生 - バズ!
...ヘルプ?
java - SpringFrameworkでプロキシ(動的プロキシ)を使用することの意味は何ですか?
春にプロキシを使う意味がわかりません。何が効率的ですか?
java - Spring AOPを使用する場合、すべてのメソッドがプロキシされますか?
Spring AOPを使用してNameMatchMethodPointcutAdvisorとBeanNameAutoProxyCreatorを使用してクラスのプロキシを作成する場合、これは基本的にオブジェクトへのすべての呼び出しをプロキシしますが、一致したメソッドにのみアドバイスを適用するか、何らかの方法でそれらのメソッドのみを持ち、通常の傍受されることになっている呼び出しのオブジェクト?
ちなみに、オブジェクトへのすべての呼び出しをプロキシし、一致するメソッドでのみAdvisorを呼び出すことは理解していると思いますが、これを確認するための適切な例/投稿が見つかりません。
castle-windsor - ウィンザーコンテナのCastleDynamicProxy
少し問題があります。CastleWindsorIOCコンテナで作業しています。今、私がやりたかったのは、いくつかのAOPの原則をいじくり回すことであり、私が具体的にやりたいことは、メソッド名に基づいて、いくつかのロギングを実行することです。私はインターセプターを見てきましたが、現時点では、クラスとして実装されたIInterceptorインターフェースを使用して、アスペクトを使用してこのロギングを実行しています。問題は、特定のメソッドでロギングを実行したい場合、メソッド名などをチェックするために実装されたアスペクトにロジックを入れる必要があるため、面倒になります...
ダイナミックプロキシとIInterceptorSelectorインターフェイスおよびIProxyGenerationHookインターフェイスを使用してこれらすべてを実行できることを読みました。私はこれがネット上で行われたいくつかの例を見てきましたが、これがすべてウィンザーコンテナにどのように適合するかについてはかなり混乱しています。つまり、私のコードでは実際にはIWindsorContainerインターフェイスへの参照であるwindsorコンテナを使用して、すべてのオブジェクトを作成しています。私の設定はすべて、XMLではなくコードで行われます。
まず、私が現在行っている方法以外に、ウィンザーコンテナでメソッド固有のAOPを実行する方法を知っている人はいますか。
次に、ウィンザーコンテナでダイナミックプロキシを使用するにはどうすればよいですか?
以下に、プロキシを作成し、クラスをインターセプターに登録するコードを追加しました
テストクラスは以下のとおりです。
インターセプターに関しては、それらは非常に単純で、名前がCheckで始まる場合はメソッドを入力するだけです。
コンテナからTestClassを解決すると、エラーが発生します。
{"これはDynamicProxy2エラーです:ミックスインタイプTestClassProxyはDynamicProxyインフラストラクチャインターフェイスであるIProxyTargetAccessorを実装しているため、自分で実装しないでください。既存のプロキシをミックスしようとしていますか?"}
プロキシを間違った方法で使用していることは知っていますが、ウィンザーコンテナでプロキシを使用する方法の具体的な例を見たことがないので、ちょっと混乱します。
つまり、「チェック」という単語で始まるメソッドに対してインターセプターに最初に指示するLoggingProxyGenerationHookを使用する場合、これは正しい方法であるか、完全に間違ったパスにあります。非常に強力であるように思われるので、プロキシを使用しました。これらのプロキシを将来のプログラミング作業に使用する方法を理解したいと思います。
java - 動的プロキシを使用して JPA コードを一元化する
実際、これは質問ではありませんが、本当にあなたの意見が必要です... あなたがいつもアクティブであることを知っているので、彼の投稿をここに置きました。
私は Java 動的プロキシを使用して集中化しました。スタンドアロン モードで使用した JPA のコードです。動的プロキシ コードは次のとおりです。
詳細情報を含むリンクは次のとおりです ( http://m-hewedy.blogspot.com/2010/04/using-dynamic-proxies-to-centralize-jpa.html )
それでは、ご意見をお聞かせください。
ありがとう。
java - Javaでは、プロキシオブジェクトでどのようにインスタンスとタイプcast(ie (ClassName))が機能しますか?
Java は、特定のインターフェイスのプロキシ クラスを生成し、プロキシ クラスのインスタンスを提供します。しかし、プロキシ オブジェクトを特定のオブジェクトに型キャストすると、Java はこれを内部でどのように処理するのでしょうか? これは特別なシナリオとして扱われますか?
たとえば、提供されたインターフェースのメソッドを使用してインターフェース Java によって作成されたプロキシ クラスを渡すことによってプロキシ オブジェクトを作成し、このクラスのオブジェクト (つまり) を提供するときに、クラスがOriginalClass
あり、それが実装されます。私の理解が正しければ、次の質問に答えていただけますかOriginalInterface
OriginalInterface
ProxyClass
ProxyClass
ProxyClass
クラスにキャストオブジェクトを入力すると、OriginalClass
これは機能しますが、Java はこれをどのように許可していますか? のインスタンスの場合も同じですか?- 私の知る限り、Java はメソッドのみでプロキシ クラスを作成しますが、このオブジェクトの属性にアクセスしようとするとどうなりますか?
- インターフェイスメソッドのみがプロキシに実装されていますが、インターフェイスになく、クラスでのみ言及されているメソッドにアクセスしようとするとどうなりますか?
ありがとう、学生
java - Javaの動的反射型SignalHandler
利用可能な場合、信号処理ロジックをインストールするにはどうすればよいsun.misc.Signal
ですか?
背景 信号処理の可用性を前提とした私のコードの第1世代は、次のようになりました。
シグナルハンドラーのリフレクティブテストと使用方法Class.forName("sun.misc.Signal")
、リフレクティブコールなどの方法を理解していると思いますSignal.handle
。
私の衝動は、動的に取得されたクラスを使用して別の匿名の内部クラスをインスタンス化することでしSignalHandler
たが、それは単なる希望的な構文だと思います。
c# - コンパイラと CLR が、自分の型で実装されていないインターフェイスを無視するようにすることはできますか?
特定のインターフェイスを実装する型を定義したいのですが、実行時にプロキシでのみ実装します。このシナリオには 2 つの障害があります。
1-コンパイラが実装されていないインターフェイスを無視するようにします。2-CLR が TypeLoadException を無視する (または少なくとも遅らせる) ようにします。
このようなことは可能ですか?
castle-windsor - Castle Windsor IInterceptor を使用したインターセプト プロパティ
Castle DynamicProxy でプロパティをインターセプトするより良い方法について提案がある人はいますか?
具体的には、傍受している PropertyInfo が必要ですが、それは IInvocation に直接含まれていないため、次のようにします。
次に、私の IInterceptor で:
}