問題タブ [dryioc]
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.
c# - クラス ライブラリの DryIoC
私はかなり単純なソリューションのセットアップを持っています:
Web プロジェクト --> サービス層 --> リポジトリ
私の IoCbootstrapper クラスは、私の Web プロジェクトにあります。
それは問題ありませんが、私のサービスはリポジトリに依存しています。
Webプロジェクトがリポジトリを認識していないため、この方法ではサービスのインスタンスを作成できないため、サービスレイヤークラスライブラリに「部分的なブートラッパー」を設定してWebプロジェクトに渡す方法はありますか?
c# - Windows Phone 8 PhoneApplicationPage でコンストラクター インジェクションに DryIoc を使用するには?
私はこのようにコンストラクタインジェクションを試みました:
App.xaml.cs
コンストラクターで:
DependencyService
Container
を作成し、すべてのアセンブリからバインディングをロードする カスタム静的クラスです。
この場合、App.RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
メソッドは常に実行されます。
e.Exception
はSystem.MissingMethodException
メッセージ付きですNo parameterless constructor defined for this object.
e.Uri
としてファイル/MainPage.xaml
で宣言されています。WMAppManifest.xml
NavigationPage
コンストラクター内ではMainPage
、コンテナーを直接使用してサービスを正常に解決できますが、コンストラクター注入を使用したいと考えています。
これに関する具体的な例は見つかりませんでした。誰でもそれがどのように機能するか考えていますか?
dryioc - DryIOC、MediatR - キー付きパラメーターで複数回評価される DecoratorWith 条件
この質問は、MediatR とデコレータを使用した DryIOC のセットアップに関する以前の質問のさらに別のフォローアップです: DryIOC と MediatR: IAsyncNotificationHandler と IAsyncRequestHandler の両方に InResolutionScopeOf を使用したインジェクション
この例では、セットアップは私の前の質問のものと似ています。リクエスト (IAsyncRequestHandler) と通知 (IAsyncNotificationHandler) があり、通知はリクエストから起動されており、両方が必要な DbContext に依存しています。解決スコープごとに注入されます。
私が今行っているのは IAsyncRequestHandler の装飾であり、キーを使用してタイプ IActionHandler の依存関係をデコレーターに渡しています。次のように依存関係を登録しています。
そして、次のようにパラメーターをデコレーターに渡します。
このように設定すると、通知はリクエスト ハンドラーから正常に発行されます。ただし、さらにデコレーターを追加し、デコレーターのセットアップ パラメーターを DecoratorWith に変更して条件を指定すると (単に true を返す場合でも)、DbContext が IAsyncNotificationHandler に正常に挿入されないため、リクエスト ハンドラーから通知が発生しません。 .
ここに問題を示すフィドルがありますhttps://dotnetfiddle.net/ob0nfA
デバッグ中に、2 つの登録がある場合、最初のデコレーターの DecoratorWith の条件が同じサービス タイプに対して 2 回呼び出されることがわかりました。これが意図されているかどうかはわかりませんが、問題に関連している可能性があると思います。単純に true を返すと、同じハンドラーに対して複数のデコレーターが登録されますが、1 つしか存在しないはずです。
代わりに Made を使用してデコレータの依存関係を登録できることはわかっていますが、この特定の例では、キー付きの登録が意図したセットアップに適しているようです。だから、私が欠けているものがあるかどうかを知りたい、またはDecoratorWithが同じサービスタイプに対して複数回呼び出されて意図したとおりに機能する場合、私ができる方法があるかどうか知りたい呼び出しを区別して、デコレータを一度だけ正しく登録できるようにします。あるいは、問題はまったく別の場所にあるのかもしれません。
ありがとう
dryioc - ジェネリック登録を開く
次のクラスがあるとします。
これらのクラスをDryIocに登録したいので、それぞれProcess<T>
がシングルトンである必要があります(そうなるようにConfiguration<T>
)。したがって、Process<ClassA>
同じインスタンスを解決し、同じProcess<ClassB>
ことを行います。しかしProcess<ClassA>
、 とProcess<ClassB>
は 2 つの異なるインスタンスになります。
についても同様Configuration<T>
です。
これら3つのクラスを登録して、必要なものを達成するにはどうすればよいですか?
コンストラクターは internal であることに注意してください。
これは私が成功せずに行ったことです:
例として、「タイプ 'System.NullReferenceException' の例外が DryIoc.dll で発生しましたが、ユーザー コードでは処理されませんでした」と表示されます。var a = container.Resolve<Process<EventArgs>>();
dryioc - 注入されたプリミティブで Generics を開く
コンストラクターに挿入された別のオープン ジェネリックおよびプリミティブにオープン ジェネリック型を登録するにはどうすればよいですか?
以下の例を参照してください。
この例では、Resolve は「パラメーター "connectionString" として文字列を解決できません」という例外をスローしています。(ここでライブコードを確認できます)