現在、ASP.NET Web ApiプロジェクトをASP.NETコアに移行しています。構成プロパティの値を格納し、プロジェクト全体で構成にアクセスできるようにする方法が少し失われています。ASP.NETコア依存性注入:工場とインスタンスの違い?
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
public IConfigurationRoot Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
// invoking a factory to create the service?
services.AddSingleton(_ => Configuration);
services.AddSingleton<IConfiguration>(_ => Configuration);
// passing the instance of the service?
services.AddSingleton(Configuration);
services.AddSingleton<IConfigurationRoot>(Configuration);
}
私はまだコードの残りの部分を移行して行くためにもう少しを持っているように私はまだ、まだ、すべてをコンパイルしていないので、私は下の二つでも有効である場合でも、わかりません。
これらの異なる実装についての明確な文書はまだ見つかりませんでした。特に下の2つは、違いを説明するのに役立ちますか?
ハイファクトリーは、複数回のインスタンスを作成したくない場合に使用します。このオブジェクトは他の多くのサービスに依存しています。しかし、あなたのケースでは、それは単一のクラスであり、テストのために構成を模擬するつもりはないので、それを工場として使用することは意味がありません。あなたはDIのために行くべきです。 –
ここをクリックしてください: - http://dotnetliberty.com/index.php/2016/05/09/asp-net-core-factory-pattern-dependency-injection/ –
@ YashveerSingh、リンクありがとうございます。しかし、私はまだ 'Func'ラムダとインスタンスを渡すことの違いについてはっきりしていません。 – Svek