質問: 新しいMVC6とEF7フレームワークをテストします。 私たちはしばしば私たちのデータベース層でHttpContextを必要とします。 MVC6でこれを行うには、次のようなDbContextコンストラクタが必要です。 ``` public class ApplicationDbContext : IdentityDbContext { HttpContext _httpContext; public ApplicationUser CurrentUser { get; set; } public ApplicationDbContext(IHttpContextAccessor httpContextFactory=null) ``` Startup.csではDIを次のように登録します: `services.AddTransient();` これは完璧に動作します... ...それがない限り。アプリケーションを実行すると、すべてがうまくいきます。しかし、 "dnx。ef migration add"を使っていくつかのモデル変更を適用する必要があるとき、 "このオブジェクトに対して定義されたパラメータなしのコンストラクタはありません"というエラーが表示されます。 OK、問題ありません。そこで、パラメータを持たないコンストラクタを追加します。このコンストラクタは、移行プロセスでのみ使用します。しかし、DIプロセスは、HttpContextオブジェクトが決して渡されないように、パラメータのないコンストラクタを登録します。 では、MVCのデフォルトのDIモデルを使用して、強制的にパラメータを使用してコンストラクタを使用するにはどうすればよいですか?移行のためのパラメータのないコンストラクタを保持しますか?
回答: クラスが登録されたときに呼び出すコンストラクタを指定することは、基本的なASP.NETのすぐに使用できるDIではサポートされていません(パブリックコンストラクタが1つの型のみを解決します)。 この目的のために、より高度なDIを使用することができます。つまり、ASP.NET 5( "Autofac": "4.0.0.0-alpha2"、 "Autofac.Dnx": "4.0.0-alpha1" )。