問題タブ [mediatr]
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 で特定のインターフェイスを実装するすべてのバインディングを装飾するにはどうすればよいですか
私はジミー・ボガードの Mediatr を使用しており、ここでパイプラインの例を使用しようとしています
私の問題は、すべてのクロージングジェネリック型をそのように取得できることです
MediatorPipeline でそれらすべてを装飾することはできません。
したがって、StructureMap を使用している場合は、次のようなものを使用できます
Ninjectでそれを達成する方法が見つからないため、メディエーターが呼び出されたときにメディエーターパイプラインを使用してから元のハンドラーに至る
c# - シンプルインジェクターによるメディエーターパターンと反変性
この質問は、MediatR のシンプルなインジェクター実装を作成しようとしているという事実に由来しています: https://github.com/jbogard/MediatR/pull/14。
ジェネリック ハンドラー インターフェイスの実装を解決しようとしているときに問題が発生しました。次の通知ハンドラ インターフェイスを検討してください。
INotifcation
空のマーカー インターフェイスです。
Pinged
( を実装するINotification
) イベントに対して次のハンドラーを定義しました。
また、一般的なハンドラー (これはすべてを処理する必要があることに注意してくださいINotification
):
以下の登録で:
今私は期待しています:
両方を解決し、どちらPingedHandler
をPingedHandler2
行うか。しかし、それはGenericHandler
実装されていないため、解決しませINotificationHandler<INotification>
んINotificationHandler<Pinged>
。Simple Injector でオブジェクト グラフ全体を検索し、それを解決する方法があるかどうか疑問に思いますPinged
。
共分散と反分散に関する Stevenのブログ投稿を見つけましたが、私の例ではうまくいきません。
c# - Autofac は同じタイプの複数のインスタンスを解決します
私のアプリケーションでは、コマンド処理を処理するMediatrのわずかに変更されたバージョンがあります。プリ プロセッサとポスト プロセッサを使用できるようにする MediatorPipeline を実装しました。
次のように、プリプロセッサを autofac に登録しています。
実行時にプリプロセッサが重複しています。重複を削除するセットをフィルタリングする必要があります。なぜこれが起こっているのかわかりません。登録をコメントアウトすると、プリプロセッサが取得されません。これは、登録を別の場所に複製していないことを示しています。
更新: 2 回登録されているように見えるタイプの詳細を以下に示します。さまざまなクラス定義:
コンクリートハンドラー
コマンドクラス
コマンドインターフェース
c# - Visual Studio が SingleInstanceFactory を見つけられない
私は何かを逃しましたが、確かではありません。
含めましたusing MediatR;
Unityを使用してタイプを登録しようとしています:
しかし、VSは見つからない、SingleInstanceFactory
またはMultiInstanceFactory
. このプロジェクトは .NET 4.5.1 を対象としており、最新の Unity である MediatR を使用しています。
最新の MediatR、https://github.com/jbogard/MediatR/blob/master/src/MediatR/Mediator.cs
ジミーが提供した例からコピーしただけです。
c# - AutofacInstanceContext.Current が null で、理由がわかりません
私は Autofac を IoC コンテナーとして使用し、MediatR をメディエーターとして使用して要求とコマンドを実行する WCF プロジェクトに取り組んでいます。
WCF コントラクトの "基本" 実装はIMediator
、依存関係として のインスタンスを受け取り、各要求に関連付けられた作業を関連付けられたハンドラーに委任します。また、承認やエラー処理などの基本実装を積み重ねるデコレーターもいくつかあります。
Autofac ドキュメント のこのページで指定されているMultitenantServiceImplementationDataProvider
ように、サービス実装でデコレータを使用する場合、WCF 内部を満たすためにa を使用する必要があります。マルチテナント関連はこれ以上必要ないため、次のものだけで構成されます。
また、.svc
Autofac でサポートされているため、インターフェイスの修飾名を指定し、基本実装の上にデコレータを配置しました。
では、MediatR に進みます。
MediatR は、サービスの場所を使用して、要求が与えられたときに適切なハンドラーをインスタンス化します。より具体的には、 CSLに依存しています。
Autofac はCSL をサポートするためのブリッジを提供するため、問題ありません。
「トリッキーな」部分は、私のハンドラーがDbContext
依存関係を持っているという事実に依存しており、各 WCF 要求の後に Autofac によって破棄されます。
したがって、AutofacServiceLocator
ルート スコープは破棄されず、インスタンスにもならないため、特定のリクエスト用に作成されたスコープを に指定する必要がありDbContext
ます。
Autofacでは、ASP.NET MVCAutofacInstanceContext.Current
の に相当する static プロパティを使用できます。
これまでのところ、依存関係を取るクラスを登録する方法は次のとおりです。AutofacDependencyResolver.RequestLifetimeScope
ServiceLocatorProvider
Mediator
開発ボックスでは期待どおりに動作しますがNullReferenceException
、ステージング環境では .
両方の環境と異なる点のみ:
- 私のボックスのHTTPとステージング環境のHTTPS。
debug
要素の属性が<system.web>
ステージング環境で false に設定されていました。
それだけです...
.NET フレームワークも同じ 4.5.2.
誰にもアイデアがありますか?ありがとう!
c# - Autofac を使用した DependencyInjectionConfig での MediatR の問題
私は私のプロジェクト MediatR で使用しています。これは私がサービスクラスに持っているものです:
これは私のハンドラーです
これは私のモデルクラスです:
そして、これは私が依存性注入構成で書いたものです:
そして、それは私にこの例外を与え続けます:
{"要求されたサービス 'MediatR.IRequestHandler`2[[Service.DataContracts.UpdateAddressInformationCommand, Service, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[MediatR.Unit, MediatR, Version=2.0.0.0, Culture =neutral, PublicKeyToken=null]]' は登録されていません。この例外を回避するには、コンポーネントを登録してサービスを提供するか、IsRegistered() を使用してサービスの登録を確認するか、ResolveOptional() メソッドを使用してオプションの依存関係を解決してください。 "}
この問題を解決する方法を知っている人はいますか?