[解決済み] .NET Core DI、コンストラクタにパラメータを渡す方法
2022-04-16 08:46:03
質問
以下のサービスコンストラクタを持つ
public class Service : IService
{
public Service(IOtherService service1, IAnotherOne service2, string arg)
{
}
}
.NET CoreのIOC機構を利用したパラメータ渡しの選択肢は?
services.AddSingleton<IOtherService , OtherService>();
services.AddSingleton<IAnotherOne , AnotherOne>();
services.AddSingleton<IService>(x =>
new Service(
services.BuildServiceProvider().GetService<IOtherService>(),
services.BuildServiceProvider().GetService<IAnotherOne >(),
""));
他に方法はありますか?
どのように解決するのですか?
式パラメータ(
x
この例では、ファクトリーデリゲートの
IServiceProvider
.
これを利用して、依存関係を解決します。
_serviceCollection.AddSingleton<IService>(x =>
new Service(x.GetRequiredService<IOtherService>(),
x.GetRequiredService<IAnotherOne>(),
""));
ファクトリーのデリゲートは、遅延呼び出しです。型が解決されるときはいつでも、完了したプロバイダをデリゲートパラメータとして渡します。
関連
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。
-
[解決済み] C#でベースコンストラクタを呼び出す
-
[解決済み] コンストラクタ内の仮想メンバー呼び出し
-
[解決済み] あるコンストラクタを別のコンストラクタから呼び出す
-
[解決済み] .NET Coreと.NET Standard Class Libraryのプロジェクトタイプの違いは何ですか?
-
[解決済み] EXEを出力する.NET Coreコンソールアプリケーションを構築する
-
[解決済み】.NET Coreがインストールされているかどうかを判断する方法
-
[解決済み】.NET CoreとASP.NET Coreの比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み】ここで「要求URIに一致するHTTPリソースが見つかりませんでした」となるのはなぜですか?
-
[解決済み】WebForms UnobtrusiveValidationModeは、jqueryのScriptResourceMappingを必要とする
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】インデックスが範囲外でした。コレクションパラメータname:indexのサイズより小さく、非負でなければなりません。