問題タブ [castle-dynamicproxy]

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 に答える
672 参照

castle-dynamicproxy - 動的プロキシを使用してコンストラクター呼び出しを傍受することは可能ですか?

動的プロキシを使用してコンストラクター呼び出しを傍受することは可能ですか?
テストとしてコンストラクタのみを含むクラスにプロキシを登録しましたが、インターセプトされません。
現時点では不可能だと思いますが、何か特別なことをする必要があるのでしょうか?

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

wpf - キャッスル ウィンザー プロキシ、暗黙的なインターフェイス、および WPF バインディング

Castle Windsor Dynamic Proxies を使用して WPF ViewModel を実装しようとしています。アイデアは、インターフェイス (例として以下の IPerson で十分です)、具体的なバッキング クラス、およびインターセプター (INotifyPropertyChanged の自動実装を提供するため) を提供することです。インターセプターの実装はこちら: http://www.hightech.ir/SeeSharp/Best-Implementation-Of-INotifyPropertyChange-Ever

私が見ている問題は、モデルを WPF コントロールにバインドすると、コントロールがモデルを INotifyPropertyChanged を実装していると認識しないことです。これは、Windsor がインターフェイスを明示的に実装しており、WPF がそれらが暗黙的であることを期待しているように見えるためだと思います (確信はありません)。

モデルへの変更がインターセプターによってキャッチされ、モデルに上げられるように、これを機能させる方法はありますか?

ライブラリのすべてのバージョンは最新です: Castle.Core 2.5.1.0 および Windsor 2.5.1.0

コードは次のとおりです。

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

c# - 動的プロキシを使用して IInvocation をインターセプトする方法は?

動的プロキシとウィンザーを使用して IInvocation をインターセプトすることは可能ですか (そのような場合にウィンザーが必要な場合でも、プロキシ生成を構成するために使用しています)?
インターセプトにより、インターセプトされたメソッドへの呼び出しが変更されたことをログに記録したいと思います。
たとえば、渡された引数または戻り値が変更されました。
これはデバッグ専用であることに注意してください。

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

c# - DynamicProxy2:CreateClassProxyWithTarget + IInterceptor

別の質問でこれを見逃した場合は、お詫び申し上げます。独自の質問があると判断する前に、しばらくの間探しました... DynamicProxy2を使用して、WPFアプリケーションのモデルクラスのインターセプトを提供したいと思います。これは、INotifyPropertyChangedをどこにでも完全に実装する必要がないようにするためです。たとえば、以下のクラスは、プロキシおよびインターセプトされた後、双方向のデータバインディングに完全に参加する必要があります。

CreateClassProxyメソッドを呼び出すことで、モデルクラスの新しいインスタンスを作成し、そのインスタンスへの呼び出しをインターセプトできることがわかりました。

残念ながら、これにより、ProxyGeneratorクラスがモデルインスタンスを作成できるようになり、中間層からそれらを取り戻すことになります。つまり、それらはすでに存在します。既存のオブジェクトをラップする必要があるので、代わりに呼び出す必要があると思います。CreateClassProxyWithTarget

ただし、これを行うと、インターセプターが機能しなくなります。インターセプターのせいではないと確信しています...非常に単純なオブジェクトです。そのインターフェースは次のとおりです。

タイプはこれFluentInterceptorを実装します。、、などのBeforeメソッドAfterは単純すぎて表示できません。それらはすべて、メソッドの呼び出し中に使用されることを意図したアクションキューに追加され、その後、各メソッドが戻りthis、メソッドの連鎖が可能になります。

以下のコードは機能しませんが、理由がわかりません。

で試してみるとCreateClassProxy、お守りのように機能します。誰かが私が間違っていることを見ていますか?

ありがとう!

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

c# - インターフェースを備えたCastleWindsorプロキシ抽象クラス

次のシナリオがあります。

Fooによって実装されたIFooのサービスを登録したいのですが、実装されていない抽象メンバーへの呼び出しを処理するインターセプターを使用します。だから、私はすることができます:

しかし、コンポーネントをアクティブ化しようとすると、次の例外が発生します。

以下が正常に機能することに気づきました。

しかし、その後、インターセプターは、インターセプト時にTargetTypeとしてIFooではなくFooを見ることになります...これは、私が望んでいることではありません。

これを達成する方法について何か提案はありますか?

ありがとう。

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

c# - Castle Dynamic Proxy 2 を使用して追加のインターフェイスを追加しますか?

既存の型に動的プロキシを作成したいのですが、ターゲット型でまだ宣言されていない新しいインターフェイスの実装を追加します。これを達成する方法がわかりません。何か案は?

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

.net - DynamicProxy を使用して Interceptor で CustomAttributes を取得できない

現在、Castle DynamicProxy を使用してインターセプターを実装しています。サービス層メソッドでいくつかのカスタム属性を取得するためにインターセプターが必要ですが、invocation.Method.GetCustomAttributes は何も返しません。私が間違っている可能性はありますか?

傍受された方法:

インターセプター:

私も試しました:

アップデート:

構成の問題である可能性があります。構成コードは次のとおりです。

インターセプターインストーラー:

サービスインストーラー:

Castle 2.5.2/.Net 3.5 を使用しています。

ありがとう、

ポール

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

nhibernate - NHibernateインターセプターとDynamicProxyを使用したサイドテーブルデータの混合

私は、エンティティのフィールドのローカライズされたバージョンを指定する、対応する1対多の変換テーブルをそれぞれに持つ多数のエンティティがあるという問題に取り組んでいます。(これはすべて、私が上にマップを追加しているレガシースキーマです)。例えば:

  • イベント
    • ID
  • EventTranslation
    • EventID
    • 言語
    • タイトル
    • その他のフィールド

したがって、情報をギリシャ語でレンダリングする場合は、2つのテーブルを結合し、Language ='Greek'を指定して、すべての適切な情報を取得します。

私がやろうとしているのは、適切なデータを単一のオブジェクトに直接組み込み、クエリの結果としてそれを返すオンザフライミックスインを構築することです。

そのために、DynamicProxyミックスインを作成するためにNHibernateインターセプターをセットアップしようとしています。それが機能していないことを除いて、そして私は理由がわかりません。これがセットアップです。私がそれを単純化できる限り最善です。

イベントは次のとおりです。

IEvenEntityリスト用のゲッターとセッターもあります。非常にシンプルで、可能な限り最も明白な方法でEventTranslation実装されるクラスもあります。IEventTranslation

イベントの流暢なマップ:

それ自体で正常に動作します。イベントを照会して、その翻訳に移動できます。マッピングは良いと確信しています。

インターセプターの形は、KrzysztofKoźmicによる非常にクールなガイドに基づいており、少し関連性のあることを行っています。まず、動的プロキシを使用して実装するスーパーインターフェイスを作成しました。

これが私のNHインターセプターです。明らかに、私は狂ったようにハッキングしています:

DynInterceptorは、リレーションシップバッグに入り、適切な翻訳を取得し、適切な値を返す作業を実際に行うインターセプターです。詳細は呼び出されないため、あまり関連性がありません。

NHインターセプターを接続すると、実行されていることがわかります。実際、NHはキャストをIEvent正しく取得します(つまり、プロキシは少なくとも作成されています)。しかし、何らかの理由で、それはエンティティの水分補給を完全に台無しにします:

NHがリフレクションを使用してプロパティを設定しているため、機能していないように見えますが、もちろん、IEventをEventに交換したため、ターゲットタイプが間違っています。これを回避する方法はありますか?

また、基本的なアプローチに関しては、NHでこれを行うためのより良い方法はありますか?

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

c# - 基本クラスやインターフェイスがなくても動的プロキシを作成することは可能ですか?

Castle Dynamic Proxy基本クラスやインターフェイスがなくても、一般的なライブラリを使用して動的プロキシを作成することは可能ですか?実行時に動的なオンザフライクラスを作成することに本当に興味があります。