2017-04-11 10 views
0

.NETコアhereのオニオンアーキテクチャのmsdnドキュメントに従ってきましたが、実際にはサービスレイヤについてしか知ることができないようですが、コードを複製せずに記事の最後の部分(UI)で、スタートアップファイルがリポジトリにアクセスしています。これは論理的ですか?もしそうなら、なぜですか?タマネギのアーキテクチャの参照先はどういう意味ですか

答えて

3

記事(UI)の最後の部分には、スタートアップファイルには、レポにアクセス です。これは論理的ですか?もしそうなら、なぜですか?

私はあなたが以下のコードを参照していると考えている -

services.AddDbContext<ApplicationContext>(options => 
    options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); 
services.AddScoped(typeof(IRepository<>), typeof(Repository<>)); 
services.AddTransient<IUserService, UserService>(); 
services.AddTransient<IUserProfileService, UserProfileService>(); 

UIプロジェクトが他のプロジェクトを参照し、IoCコンテナに依存関係を登録することが通常である、作曲ルートのでは、アプリケーションのエントリポイントのできるだけ近くに配置する必要があります。

var userService = new UserService(); 

あなたはUIに新しいキーワードを使用してUserServiceのをインスタンス化した場合、彼らはしっかりを結合さになる - 1クラスの変化は、別の変更を強制します。

IoCコンテナは、実行時に依存関係を解決し、必要に応じてそれらを渡すことによって、依存関係の問題を解決します。あなたはDIについての詳細をお知りになりたい場合は

、あなたが読みたいかもしれませんDependency Injection in .NET by Mark SeemannAdaptive Code via C# by Gary McLean Hall

関連する問題