IMessageService のように、SimpleInjector を構成して LogMiddleware の Invoke メソッドの依存関係を解決するにはどうすればよいですか?
私が知っているように、Asp.net コアは HttpContext.RequestServices (IServiceProvider) を使用して依存関係を解決します。SimpleInjector コンテナーを HttpContext.RequestServices プロパティに設定しましたが、機能しませんでした。各テナントにはコンテナーが必要なため、ServiceProvider を動的に変更したいと考えています。
public class LogMiddleware
{
RequestDelegate next;
private readonly ILogger log;
public LogMiddleware(RequestDelegate next, ILoggerFactory loggerFactory)
{
this.next = next;
this.log = loggerFactory.CreateLogger<LogMiddleware>();
}
public async Task Invoke(HttpContext context, IMessageService messageService)
{
await context.Response.WriteAsync(
messageService.Format(context.Request.Host.Value));
}
}
public interface IMessageService
{
string Format(string message);
}
public class DefaultMessageService : IMessageService
{
public string Format(string message)
{
return "Path:" + message;
}
}