2016-10-20 5 views
1

私は、プロジェクトのモデルで以下のクラスを持っているASP.NETコアサービスの登録エラー

InvalidOperationException: Unable to resolve service for type 'Data.Repositories.Identity.IUserRepository' while attempting to activate 'Service.Identity.UserService'. 

私が上位言ったように、これは完全な.NET FrameworkでASP.NETのコアである:私は、アプリケーションを実行すると

// Add application services. 
services.AddTransient<IEmailSender, AuthMessageSender>(); 
services.AddTransient<ISmsSender, AuthMessageSender>(); 
services.AddScoped<IUserService, UserService>(); 

私はエラーを取得します。何かご意見は?

+1

サービスコレクションにIUnitOfWorkとIUserRepositoryも登録されていますか?私が見る限り、これらの2つはUserServiceで必要とされています。 –

+0

私はIDbFactory、IUnitOfWork、IRepositoryのインタフェースを持つリポジトリパターンを使用します。私は自分のStartup.csファイルに登録していませんでした。私はすべて登録する必要がありますか? –

答えて

2

クラスコンストラクタに注入するものをサービスコレクションのすべてに登録する必要があります。私の知る限り、SESできるよう:

public UserService(IUserRepository usersRepository, IUnitOfWork unitOfWork) 
{ 
    this.usersRepository = usersRepository; 
    this.unitOfWork = unitOfWork; 
} 

をあなたはIUserRepositoryとIUnitOfWorkは自動的に解決して注入されることを期待する - ので、彼らはに登録する必要があります。 UnitOfWorkがコンストラクタにIDbFactoryを注入する必要がある場合は、それをサービスコレクションに登録する必要があります。さもなければ、依存性注入フレームワークはそれを解決することを知らないでしょう。