1

ASP.NET Core 1.0プロジェクトでは、DIを使用してどのようにコンストラクタにパラメータを渡すことができます。たとえば、以下のサービスをStartup.csに登録するにはどうすればいいですか? StateService()はBlogingContext型の入力パラメータを必要とするため、services.AddTransient(typeof(IStateService), new StateService());は機能しません。または、関連するデータベースを使用して次のサービスを構築する別の方法がありますか?ここでStateはSQL Server Dbからのテーブルです。アプリはCode FirstアプローチでEntityFrameworkCoreを使用しています。私は最新のリリースのASP.NET Core 1.0とVS2015-Update 3を2016年6月27日にリリースしました。ASP.NETコア依存性注入、パラメータを挿入

私はsimilar example hereですが、全く同じタイプの入力パラメータではありません。

サービスは:ドキュメントの状態として

public interface IStateService 
    { 
     IEnumerable<State> List(); 
    } 

    public class StateService : IStateService 
    { 
     private BloggingContext _context; 

     public StateService(BloggingContext context) 
     { 
      _context = context; 
     } 

     public IEnumerable<State> List() 
     { 
      return _context.States.ToList(); 
     } 
    } 
+0

起動時に 'services.AddDbContext ();'のようなもので 'BloggingContext'を登録しようとしましたか? https://docs.asp.net/en/latest/fundamentals/dependency-injection.html#registering-your-own-services – mollwe

+0

@mollwe助けていただきありがとうございます。あなたのコードは私のカスタムサービス、すなわち 'StateService'を登録しません – nam

+0

状態サービスを' service.AddTransient (); 'として登録すると、それは機能しますか? – mollwe

答えて

1

here(少し下にスクロールして)次のようなIStateServiceBloggingContext登録する必要があります

services.AddDbContext<BloggingContext>(); 
services.AddScoped<IStateService, StateService>(); 

次にDIはのための全体の依存関係ツリーを解決します君は。サービスはDbContextと同じ存続期間を使用し、スコープを使用する必要があるため、サービスでスコープ有効期間を使用する必要があります。