問題タブ [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.
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, Action
1 アクション) 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 行目
c# - 注射する。内部セット プロパティへの奇妙なインターセプト
ドメイン オブジェクト:
TargetObject.cs
構成とテスト:
最後の行では、プロパティChildTargetObjectを変更し、内部プロパティChildTargetObjectInnerを変更しています。しかし、私たちはそれを傍受しませんでした。なんで?
ChildTargetObjectの近くの「仮想」を削除すると、正常に動作します (ただし、NHiber を使用しているため、この回避策は不可能です)。
ChildTargetObjectInnerを直接変更すると (例: o.ChildTargetObjectInner = new ChildTargetObject(); )、インターセプトが発生しました。
(クラス内およびクラス外の) 変更を傍受するにはどうすればよいですか? ありがとうございました。
c# - MethodInfo.GetMethodBody が null を返す
IInvocation
アプリケーションで作成したクラスのメソッドを指す(from Ninject.Extensions.Interception
) があります.Request.Method
(コア .NET コードではなく、カスタムです)。を呼び出すとinvocation.Request.Method.GetMethodBody()
、 として返されnull
ます。なんで?
Castle DynamicProxy の問題のようです:
c# - Ninjectによる.net MVCコントローラーのインターセプト
MVC 4 プロジェクトと Ninject 3 がすべて接続されています。
ここで、MVC コントローラー メソッドで傍受を処理したいと考えています。
これを追加すると:
それはちょっとうまくいきます(私自身のメソッドはインターセプトされませんが、代わりに、ベースコントローラークラスのBeginExecute、EndExecute、およびDisposeメソッドがインターセプトされます)。しかし、今のところは大丈夫だとしましょう。
次のように HomeController で特定のメソッドを傍受したい場合:
それは単に機能しません。インターセプトが発生することはありません。
一方、プロジェクトのプレーンなサービス クラスで同じメソッド インターセプトを使用すると、機能します。インターセプトに問題があるのは Controller メソッドだけのようです。
^これは機能します。
誰が私が何をすべきかについて何か考えがありますか?
PS。私は WebActivators で NinjectWebCommon を使用しています:
dependency-injection - マルチスレッド環境での Ninject インターセプト
メソッドの完了時間を記録するために Ninject.Extensions.Interception.DynamixProxy を使用してインターセプターを作成しようとしています。
シングルスレッド環境では、次のように機能します。
ただし、マルチスレッドのシナリオでは、StopWatch が呼び出し間で共有されるため、これは機能しません。呼び出し間で共有されないように、StopWatch のインスタンスを BeforeInvoke から AfterInvoke に渡す方法は?
ninject - Ninject インターセプトが MVC 5 で機能しない
属性を追加するメソッドをインターセプトする InterceptAttribute を実装しようとしています。WebAPI ソリューションでは動作していますが、MVC 5 アプリケーションでは動作しません。コードは両方のプロジェクトで同じです。次のコードは、私が作成した属性です。
CacheInterceptor コードは次のとおりです。
最後に、次のメソッドに属性を追加しました。
コードの実行が InterceptCacheAttribute クラスに入ることはありません。そのクラスと CacheInterceptor クラス内にデバッグ ポイントを配置しましたが、デバッグ ポイントがヒットすることはありません。属性がオンになっているメソッドは正常に実行されますが、傍受したいのですが、それは起こっていません。別のプロジェクトに同じコードがあります。そのプロジェクトは、うまく機能する WebAPI プロジェクトです。メソッドはインターセプトされ、すべてが正常に機能します。MVC 5 アプリケーションで動作させられない理由を誰かに説明してもらえますか? 大変ありがたく存じます。
BatteryBackupUnit の質問への回答: 答えはできません。以下は私の NinjectWebCommon.cs クラスです。
RegisterServices メソッド内では、アプリケーション内のすべてのアセンブリが繰り返され、NinjectModule から継承するすべてのクラスが読み込まれます。ただし、デバッグできないため、機能していることを確認できません。試してみましたが、クラス内で実行が停止することはありません。クラスがインスタンス化され、モジュールがロードされていることはわかっています。これらのモジュールには動作しているバインディングがあるためですが、それを確認することはできません。
c# - Ninject Activation Context が Type にバインドされているかどうかを確認する
Ninject を使用して、型に対してインターセプトを選択的に使用しようとしています。実装が特定のインターフェイスを実装している場合、それをインターセプトしたいと考えています。Ninject Activation Context をチェックして、そのターゲットがインターフェースを実装しているかどうかを確認するにはどうすればよいですか?
- この例では、IFoo ではなく Foo をチェックしたいことに注意してください。(IFoo は Ninject.Activation.Binding.Service プロパティで簡単に見つかります)
c# - インターセプトされた型のビュー型マッピングに ViewModel を追加
私はWPFアプリでCaliburn MicroとNinjectを一緒に使用しています。ViewModels への呼び出しをインターセプトしてログに記録するために使用Ninject.Extensions.Interception
していますが、Caliburn が別の名前空間と名前のインターセプトされたビューモデル (プロキシ) を渡されているため、Caliburn が ViewModels のビューを見つけることができません。
たとえば、取得する代わりに:
それは得ています:
さらに複雑なことに、ViewModel と View は異なるアセンブリに配置されているため、名前空間を想定できません。
実行時にプロキシに問い合わせる必要があるため、文字列マッピングを追加するのではなく、プログラムでビューの解決にフックする方法が必要です。これを行う方法がわかりません - Calliburn Micro で可能ですか?