[解決済み] 依存性注入、パラメータ付き注入
2023-07-08 10:42:32
質問
vNextでDIを実装しています。 コンストラクタにパラメータを渡すにはどうしたらよいでしょうか。 例えば、以下のようなクラスがあるとします。
public class RedisCacheProvider : ICacheProvider
{
private readonly string _connectionString;
public RedisCacheProvider(string connectionString)
{
_connectionString = connectionString;
}
//interface methods implementation...
}
そしてサービス登録。
services.AddSingleton<ICacheProvider, RedisCacheProvider>();
RedisCacheProviderクラスのコンストラクタにパラメータを渡すにはどうすればよいですか? 例えばAutofacの場合。
builder.RegisterType<RedisCacheProvider>()
.As<ICacheProvider>()
.WithParameter("connectionString", "myPrettyLocalhost:6379");
どのように解決するのですか?
キャッシュプロバイダを手動でインスタンス化するデリゲートを提供するか、直接インスタンスを提供するかのどちらかです。
services.AddSingleton<ICacheProvider>(provider => new RedisCacheProvider("myPrettyLocalhost:6379"));
services.AddSingleton<ICacheProvider>(new RedisCacheProvider("myPrettyLocalhost:6379"));
コンテナは、たとえIDisposableを実装していても、手動でインスタンス化した型を明示的に廃棄することはないことに注意してください。については ASP.NET Core のドキュメントを参照してください。 サービスの廃棄 を参照してください。
関連
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み】統合マネージドパイプラインモードで適用されないASP.NETの設定が検出された
-
[解決済み] [Solved] .NETでスレッドの終了を待つには?
-
[解決済み】ユーザー設定値を別のユーザー設定値で設定する
-
[解決済み] リフレクションを使用して文字列からプロパティ値を取得する
-
[解決済み] C#でベースコンストラクタを呼び出す
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] クラス内の項目の並び順。フィールド、プロパティ、コンストラクター、メソッド
-
[解決済み] なぜ依存性注入を使用するのですか?
-
[解決済み] C#4 インターフェースで定義されたオプションパラメータは、なぜ実装クラスで強制されないのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み】C#で四捨五入する方法
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み】なぜこのコードはInvalidOperationExceptionを投げるのですか?
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み】「namespace」なのに「type」のように使われる。
-
[解決済み] .NET Core DI、コンストラクタにパラメータを渡す方法