2017-04-11 72 views
0

我已经在.net核心here中关注了洋葱体系结构上的msdn文档,但看起来你不能真正知道UI只知道服务层,无需复制代码。在文章的最后部分(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(); 

如果实例UserService使用UI 关键字,就成为紧密耦合 - 在一个类中的变化迫使其他的变化。

IoC容器通过在运行时解析依赖关系并根据需要传递它们来解决依赖性问题。

如果您想了解更多关于DI,你可能需要阅读Dependency Injection in .NET by Mark SeemannAdaptive Code via C# by Gary McLean Hall

相关问题