Configure(Startup.csで)では、渡されたIApplicationBuilderが取得され、ApplicationServicesプロパティ(IServiceProvider)を持ちます。
あなたは簡単に
public void Configure(IApplicationBuilder app)
{
GetMeSomeServiceLocator.Instance = app.ApplicationServices;
}
public static class GetMeSomeServiceLocator
{
public static IServiceProvider Instance { get; set; }
}
ような何かを行うことができますし、後で、どこかに全く関係のない、
public void SomeRandomMethod()
{
var service = GetMeSomeServiceLocator.Instance.GetService<MyAwesomeService>();
// Do something with service
}
を行うことは恐ろしいアンチパターンだし、あなたがが、これを行うべきではありません。
恥知らずに盗まれたhttps://github.com/aspnet/DependencyInjection/issues/294(後に残るように)
このような場合は、既存のクラスのファクトリクラスを登録する必要があります。クラスを構築してパブリックプロパティを設定するか、ILoggerを注入するpublicメソッドを呼び出します。 –
どのようにクラスを使用していますか? ILoggerFactoryのパブリックプロパティを定義できますか?このプロパティをクラス外から設定しますか? – Nikolaus
@Nikolaus私はクラスを自立しないように書き直して、ILoggerFactoryを '得ることができます。 – Grandizer