問題タブ [ninject-interception]
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.
wcf - Ninject Interception を WCF で動作させることができません
UNITY から WCF サービスのデフォルトのサービス ロケータとして Ninject に切り替えます。これを行うために利用できる美しい NuGet パッケージがあり、標準解像度を起動して実行するのは簡単です。
ただし、WCF サービスへの呼び出しを傍受したいと考えています。これが私が持っているものです:
私のsvcファイル:
これが私のサービスです:
カーネルは次のように構築されます。
このようにカーネルをセットアップすると、マネージャー インスタンスが挿入されますが、傍受は行われません。実行前と実行後に何かをログに記録するインターセプターが呼び出されることはありません。
他の Stackoverflow スレッドは、次の使用を提案しています。
そうすれば、マネージャーは注射されません。次に、マネージャーを取り込むコンストラクターを作成すると、機能しますが、インターセプトはありません。
ここで何が間違っていますか?
c# - インターセプターに渡されたパラメーターを使用してインターセプト属性を注入しますか?
私は現在(非常に単純化して)次のコードで傍受を行っています:
(下部の質問を参照)
私のインターセプター:
私の属性:
メソッドに適用:
これは機能し、次のように属性を介して追加のパラメーターを渡すことができます。
属性でお気づきかもしれませんが、属性クラスでアクセスできる属性からいくつかのパラメーターを取得していますが、それらをインターセプターに渡すことができません。Kernel.Get<>() 呼び出しで ConstructorArgument を使用しようとしましたが、これはエラーをスローしませんが、AuthorizationInterceptor コンストラクターは ninject から値を取得しません。コード サンプルでわかるように、GetCustomAttributes() も試しましたが、これも何も返されません。このような他の同様の投稿 ( Ninject Interception 3.0 Interface proxy by method attributes ) を見ると、正しい方法のように見えますが、機能しません。何か案は?
c# - AOP Ninject インターセプトされたメソッドが呼び出されないようにする
Ninject と AOP を使用してキャッシングを行っています。リポジトリ内の任意のメソッドに適用できる属性があり、BeforeInvoke ではキャッシュされたオブジェクトがあればそれを返し、AfterInvoke はキャッシュされたオブジェクトを作成します。これはすべてうまく機能しますが、初期メソッドの呼び出しを停止する方法がわかりません。つまり、キャッシュされたオブジェクトがある場合、intyercepted メソッドを呼び出す代わりにそれを返します。私のインターセプターはここにあります:
else ステートメントでは、呼び出されたメソッド 'invocation.Proceed();' を呼び出すように明確に言っていません。それはまだそれを呼び出します。ninject に invocation.ReturnValue で戻るように指示するにはどうすればよいですか?
c# - Ninject Bind with Interception がインターフェイス プロキシを返すのはなぜですか?
Ninject.Extensions.Interception
3.0.0.8 がクラスの動的プロキシを構築する方法を理解しようとしています。から継承する属性で具象クラスを装飾するInterceptAttribute
か、メソッドでバインド時に直接インターセプトするとIntercept()
、Ninject は通常の型ではなく、装飾されたクラスの動的プロキシを返すことがわかりました。
例外ロガーインターセプターを追加する具象型にIPolicySearchPresenter
バインドするインターフェイスがあります。FlexPolicySearchPresenter
問題は、そのバインディングの戻り値の型を検査すると、次のようになることです。
Castle.Proxies.IPolicySearchPresenterProxy
代わりにのインスタンスを取得しますFlexPolicySearchPresenterProxy
これにより、私の FluorineFx リモート処理アプリで問題が発生しています。ただし、キャッスル プロキシを手動で作成すると、次のようになります。
返される型Castle.Proxies.FlexPolicySearchPresenterProxy
は、私のリモート処理の実装で完全に機能するものとして返されます。
問題は、Ninject.Interception が のFlexPolicySearchPresenterProxy
代わりに のインスタンスを返すようにするにはどうすればよいかということですIPolicySearchPresenterProxy
。手動の Castle の方法を実行することで、別の方法でバインドしていることに注意してください。
ninject 方法の代わりに:
適切なタイプを取得するために、Ninject でバインディングを行う方法を変更する必要がありますか?
.net - Ninject.Extensions.Interception がメンバーを仮想にする必要があるのはなぜですか?
Ninject.Extensions.Interceptionがすべてのメソッドとプロパティを virtual にする必要があるのはなぜですか?
overrides
機能を提供するのはメンバーだと思いますAOP
が、メソッドの前後にメソッドを呼び出してインターセプトすることで実装できませんでしたか? 置換の場合でも、元のメソッドをラップして、何か他のことをするか、何もしないことができます。
他のコンテナではメンバーが である必要がありますvirtual
か? するものとしないもの。ない場合は?それらはどのように機能しますか?
ninject - 複数のバインディングが存在する場合に間違ったインターセプターが選択される
インターフェイスの複数の実装があり、それぞれに異なるインターセプターを適用したい。
インターセプターの例:
バインディング:
Foo1 が 10 倍され、Foo2 が 100 倍されることを期待しています。しかし、代わりに両方とも 10 倍されます。
これはバグですか、それとも何か間違っていますか?
c# - 城の動的プロキシを介して空でないコンストラクターを持つ Ninject インターセプト プロキシ クラス
現在の実装のほとんどは、ここで提供される情報に基づいています。
Ninject特定の属性を持つメソッドをインターセプトしますか?
特定の属性 (ninject インターセプター属性ではない) を持つすべてのメソッドを検索するカスタム計画戦略クラスを使用します。これらのメソッドは、基準に一致する場合にプロキシされます。
使用例は次のとおりです。
Kernel.Components.Add<IPlanningStrategy, CustomPlanningStrategy<LoggingAttribute, LoggerInterceptor>>();
これにより、属性を持つメソッドが検索され[Logging]
、ロギング インターセプタが使用されます。
ただし、現在、関連する属性を持つメソッドをプロキシしようとしているときに、動的プロキシから InvalidProxyConstructorArgumentsException を取得しています。仮想メソッドが必要であることを読んだことは覚えていますが、パラメーターなしのコンストラクターが必要だったことは覚えていません。
すべてのバインディングはインターフェイスに対して行われ、AOP インターセプターは、属性と上記のリンクに記載されているカスタム プロキシ プランニング クラスを介して行われます。
動的プロキシ (または linfu バージョン) を取得して、依存関係を持つコンストラクタを持つクラスをプロキシする方法はありますか? (すべての依存関係はカーネルにあるため、解決できないわけではありません)。
ninject - インターセプター内のパラメーターのカスタム属性を取得する Ninject
装飾されたメソッドのパラメーターを列挙して、それらのパラメーターに適用されたカスタム属性を取得して、特定の値を決定しようとしています。
インターセプターには次のものがあります。これは、使用しようとした 2 つの異なるメソッドを示しています。GetParameters の取得と列挙の両方ですが、1 つは IsDefined を使用し、もう 1 つは GetCustomAttributes を使用しています。
私が探している属性は単純で、実装はありません:
そして InterceptAttribute:
そして、私が傍受している方法:
ご覧のとおり、userId を EmulatedUser 属性で装飾し、メソッドをインターセプター属性で装飾しました。userId の属性が表示されないことを除いて、他のすべては正常に機能します。
メソッドにカスタム属性が表示されない理由はありますか? メソッドが実際の「呼び出しターゲット」ではないことに関係があると思いますが、これを回避する方法はありません。助けてください!
asp.net-mvc-4 - インジェクション時に ninject をセットアップし、モジュール バインディング (nInjectModule) を別のアセンブリにセットアップする方法
以下はプロジェクト構造です。
- MVC 4 アプリケーション 1) プロジェクトは、コントローラーにインターフェイスが注入された MVC 用です。2) このアプリケーションにはインターフェースが存在します。
- ライブラリ プロジェクトのマネージャー。1) プロジェクトには、MVC アプリケーションのリファレンスが含まれています。2) このアセンブリへの各インターフェイスの実装。3) NinjectMOdule は、関連するマネージャー クラスとのバインドされたインターフェイスであるこのプロジェクトに存在します。
問題: 注入されたクラスを Web アプリケーションに取得できません。
次のエラーが発生します。
Error No matching bindings are available, and the type is not self-bindable.
Activation path:
2) Injection of dependency ILeadInformation into parameter leadInformation of constructor of type HomeController
1) Request for HomeController