ASP.Net Core IoCコンテナには、現在どのビューが表示されているかに基づいてインターフェイスの実装を提供します。私は、実行時にファクトリメソッドを提供することでこれを行うことができるはずだと考えました。 Startup.cs
で私は、次の登録を追加しました:ASP.NetのコアDIファクトリ(HttpContextに基づく)
services.AddTransient<IMyInterface>(serviceProvider =>
{
var context = serviceProvider.GetRequiredService<IHttpContextAccessor>().HttpContext;
//Need to switch on current view somehow?
switch(context.??????){
case ???:
return new MyImplementationOne();
case ???:
return new MyImplementationTwo():
}
}
はどのようにして示されている現在のビューに基づいて切り替えることHttpContext
を使用することができますか?または、serviceProvider
で利用可能な他のサービスを使用していますか?
は、あなたがリクエストURLを使用してみましたか?コントローラのアクションが実行され、ビューの結果が返される前に、どのビューが表示されるかわからない。そしてその時点で、すべての依存関係はすでに解決されていなければなりません。 – juunas
@juunas私はこれに初めてです:どのようにリクエストURLを取得しますか? 'context.Request'は' URL'プロパティを持っていませんか? –
'Path'プロパティがあります。 – juunas