問題タブ [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.

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

ninject - Ninject の無効な操作例外:「Ninject コンポーネント IAdviceRegistry の読み込み中にエラーが発生しました」

WebフォームアプリケーションでNinject.Extension.Factory 3.2.0.0でNinject 3.2.0.0を使用しています。

次のエラーレポートが表示されます...

Ninject コンポーネントの読み込みエラー IAdviceRegistry カーネルのコンポーネント コンテナーにそのようなコンポーネントが登録されていません。

提案: 1) KernelBase のカスタム サブクラスを作成した場合は、AddComponents() メソッドが適切に実装されていることを確認してください。2) RemoveAll() の呼び出しによってコンテナからコンポーネントを削除していないことを確認してください。3) 誤って複数のカーネルを作成していないことを確認してください。

c:\Projects\Ninject\ninject\src\Ninject\Components\ComponentContainer.cs:line 162 の Ninject.Components.ComponentContainer.Get(Type component) c:\Projects\Ninject\ の Ninject.Components.ComponentContainer.GetT ninject\src\Ninject\Components\ComponentContainer.cs: c:\Projects\Ninject\ninject.extensions.interception\src\Ninject の Ninject.Extensions.Interception.Activation.Strategies.ProxyActivationStrategy.ShouldProxy(IContext コンテキスト) の 116 行目。 Extensions.Interception\Activation\Strategies\ProxyActivationStrategy.cs: c:\Projects\Ninject\ninject.extensions.interception\src の Ninject.Extensions.Interception.Activation.Strategies.ProxyActivationStrategy.Deactivate(IContext コンテキスト、InstanceReference 参照) の 66 行目\Ninject.Extensions.Interception\Activation\Strategies\ProxyActivationStrategy.cs:Ninject.Activation の 51 行目。Pipeline.<>c__DisplayClass6.b__4(IActivationStrategy s) c:\Projects\Ninject\ninject\src\Ninject\Activation\Pipeline.cs:Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.Map[T](IEnumerable の 72 行目1 series, Action1 アクション) c:\Projects\Ninject\ninject\src\Ninject\Infrastructure\Language\ExtensionsForIEnumerableOfT.cs:line 31 at Ninject.Activation.Pipeline.Deactivate(IContext context, InstanceReference reference) in c:\Projects\Ninject\ ninject\src\Ninject\Activation\Pipeline.cs: c:\Projects\Ninject\ninject\src\Ninject\Activation\Caching\Cache.cs の Ninject.Activation.Caching.Cache.Forget(CacheEntry エントリ) の 74 行目: c:\Projects\Ninject\ninject\src\Ninject\Activation\Caching\Cache.cs の Ninject.Activation.Caching.Cache.Forget(IEnumerable`1 cacheEntries) の 254 行目: Ninject.Activation.Caching.Cache の 240 行目.Clear(Object scope) in c:\Projects\Ninject\ninject\src\Ninject\Activation\Caching\Cache.cs:line 198 at Ninject.Activation.Caching.Cache.<>c__DisplayClass3.b__1(Object o, EventArgs e ) c:\Projects\Ninject\ninject\src\Ninject\Activation\Caching\Cache.cs: c:\Projects\Ninject\ninject\src\Ninject\Activation の Ninject.Activation.Blocks.ActivationBlock.Dispose(Boolean disposing) の 94 行目\Blocks\ActivationBlock.cs: c:\Projects\Ninject\ninject\src\Ninject\Infrastructure\Disposal\DisposableObject.cs の Ninject.Infrastructure.Disposal.DisposableObject.Dispose() の 59 行目: Brightspot.WebApi の 33 行目。 Ioc.NinjectDependencyScope.Dispose() で System.Net.Http.HttpRequestMessageExtensions.DisposeRequestResources (HttpRequestMessage 要求)\Projects\Ninject\ninject\src\Ninject\Infrastructure\Disposal\DisposableObject.cs: System.Net.Http.HttpRequestMessageExtensions.DisposeRequestResources(HttpRequestMessage request) の Brightspot.WebApi.Ioc.NinjectDependencyScope.Dispose() の 33 行目\Projects\Ninject\ninject\src\Ninject\Infrastructure\Disposal\DisposableObject.cs: System.Net.Http.HttpRequestMessageExtensions.DisposeRequestResources(HttpRequestMessage request) の Brightspot.WebApi.Ioc.NinjectDependencyScope.Dispose() の 33 行目

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

c# - 注射する。内部セット プロパティへの奇妙なインターセプト

ドメイン オブジェクト:

TargetObject.cs

構成とテスト:

最後の行では、プロパティChildTargetObjectを変更し、内部プロパティChildTargetObjectInnerを変更しています。しかし、私たちはそれを傍受しませんでした。なんで?

ChildTargetObjectの近くの「仮想」を削除すると、正常に動作します (ただし、NHiber を使用しているため、この回避策は不可能です)。

ChildTargetObjectInnerを直接変更すると (例: o.ChildTargetObjectInner = new ChildTargetObject(); )、インターセプトが発生しました。

(クラス内およびクラス外の) 変更を傍受するにはどうすればよいですか? ありがとうございました。

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

c# - MethodInfo.GetMethodBody が null を返す

IInvocationアプリケーションで作成したクラスのメソッドを指す(from Ninject.Extensions.Interception) があります.Request.Method(コア .NET コードではなく、カスタムです)。を呼び出すとinvocation.Request.Method.GetMethodBody()、 として返されnullます。なんで?

Castle DynamicProxy の問題のようです:

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

c# - Ninjectによる.net MVCコントローラーのインターセプト

MVC 4 プロジェクトと Ninject 3 がすべて接続されています。

ここで、MVC コントローラー メソッドで傍受を処理したいと考えています。

これを追加すると:

それはちょっとうまくいきます(私自身のメソッドはインターセプトされませんが、代わりに、ベースコントローラークラスのBeginExecute、EndExecute、およびDisposeメソッドがインターセプトされます)。しかし、今のところは大丈夫だとしましょう。

次のように HomeController で特定のメソッドを傍受したい場合:

それは単に機能しません。インターセプトが発生することはありません。

一方、プロジェクトのプレーンなサービス クラスで同じメソッド インターセプトを使用すると、機能します。インターセプトに問題があるのは Controller メソッドだけのようです。

^これは機能します。

誰が私が何をすべきかについて何か考えがありますか?

PS。私は WebActivators で NinjectWebCommon を使用しています:

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

dependency-injection - マルチスレッド環境での Ninject インターセプト

メソッドの完了時間を記録するために Ninject.Extensions.Interception.DynamixProxy を使用してインターセプターを作成しようとしています。

シングルスレッド環境では、次のように機能します。

ただし、マルチスレッドのシナリオでは、StopWatch が呼び出し間で共有されるため、これは機能しません。呼び出し間で共有されないように、StopWatch のインスタンスを BeforeInvoke から AfterInvoke に渡す方法は?

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

ninject - Ninject インターセプトが MVC 5 で機能しない

属性を追加するメソッドをインターセプトする InterceptAttribute を実装しようとしています。WebAPI ソリューションでは動作していますが、MVC 5 アプリケーションでは動作しません。コードは両方のプロジェクトで同じです。次のコードは、私が作成した属性です。

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

最後に、次のメソッドに属性を追加しました。

コードの実行が InterceptCacheAttribute クラスに入ることはありません。そのクラスと CacheInterceptor クラス内にデバッグ ポイントを配置しましたが、デバッグ ポイントがヒットすることはありません。属性がオンになっているメソッドは正常に実行されますが、傍受したいのですが、それは起こっていません。別のプロジェクトに同じコードがあります。そのプロジェクトは、うまく機能する WebAPI プロジェクトです。メソッドはインターセプトされ、すべてが正常に機能します。MVC 5 アプリケーションで動作させられない理由を誰かに説明してもらえますか? 大変ありがたく存じます。

BatteryBackupUnit の質問への回答: 答えはできません。以下は私の NinjectWebCommon.cs クラスです。

RegisterServices メソッド内では、アプリケーション内のすべてのアセンブリが繰り返され、NinjectModule から継承するすべてのクラスが読み込まれます。ただし、デバッグできないため、機能していることを確認できません。試してみましたが、クラス内で実行が停止することはありません。クラスがインスタンス化され、モジュールがロードされていることはわかっています。これらのモジュールには動作しているバインディングがあるためですが、それを確認することはできません。

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

c# - Ninject Activation Context が Type にバインドされているかどうかを確認する

Ninject を使用して、型に対してインターセプトを選択的に使用しようとしています。実装が特定のインターフェイスを実装している場合、それをインターセプトしたいと考えています。Ninject Activation Context をチェックして、そのターゲットがインターフェースを実装しているかどうかを確認するにはどうすればよいですか?

  • この例では、IFoo ではなく Foo をチェックしたいことに注意してください。(IFoo は Ninject.Activation.Binding.Service プロパティで簡単に見つかります)
0 投票する
1 に答える
199 参照

c# - インターセプトされた型のビュー型マッピングに ViewModel を追加

私はWPFアプリでCaliburn MicroとNinjectを一緒に使用しています。ViewModels への呼び出しをインターセプトしてログに記録するために使用Ninject.Extensions.Interceptionしていますが、Caliburn が別の名前空間と名前のインターセプトされたビューモデル (プロキシ) を渡されているため、Caliburn が ViewModels のビューを見つけることができません。

たとえば、取得する代わりに:

それは得ています:

さらに複雑なことに、ViewModel と View は異なるアセンブリに配置されているため、名前空間を想定できません。

実行時にプロキシに問い合わせる必要があるため、文字列マッピングを追加するのではなく、プログラムでビューの解決にフックする方法が必要です。これを行う方法がわかりません - Calliburn Micro で可能ですか?