首页 新闻 赞助 找找看

NopCommerce 中的 Controllers 是如何初始化的?

0
悬赏园豆:30 [已解决问题] 解决于 2015-04-16 18:33

最近在分析 NopCommerce 代码,发下 Nop 的 Controllers 的构造方法里都需要传入参数,依赖注入的过程我已经弄明白了,但是我跟踪调试也没有弄明白 Nop 的控制器是如何执行进去的,麻烦明白人给指条明路哈。

 1     #region Constructors
 2 
 3         public BlogController(IBlogService blogService, 
 4             IWorkContext workContext,
 5             IStoreContext storeContext,
 6             IPictureService pictureService, 
 7             ILocalizationService localizationService,
 8             IDateTimeHelper dateTimeHelper,
 9             IWorkflowMessageService workflowMessageService, 
10             IWebHelper webHelper,
11             ICacheManager cacheManager, 
12             ICustomerActivityService customerActivityService,
13             IStoreMappingService storeMappingService,
14             MediaSettings mediaSettings,
15             BlogSettings blogSettings,
16             LocalizationSettings localizationSettings, 
17             CustomerSettings customerSettings,
18             CaptchaSettings captchaSettings)
19         {
20             this._blogService = blogService;
21             this._workContext = workContext;
22             this._storeContext = storeContext;
23             this._pictureService = pictureService;
24             this._localizationService = localizationService;
25             this._dateTimeHelper = dateTimeHelper;
26             this._workflowMessageService = workflowMessageService;
27             this._webHelper = webHelper;
28             this._cacheManager = cacheManager;
29             this._customerActivityService = customerActivityService;
30             this._storeMappingService = storeMappingService;
31 
32             this._mediaSettings = mediaSettings;
33             this._blogSettings = blogSettings;
34             this._localizationSettings = localizationSettings;
35             this._customerSettings = customerSettings;
36             this._captchaSettings = captchaSettings;
37         }
38 
39     #endregion
问题补充:

可能我上面没有说清楚,通常 MVC 直接通过路由调用控制器是不需要给路由传参的,直接初始化,但是我在 Nop 的代码里没有看到初始化传参的方法,我参考了 Nop 的架构自己写了个项目,但是在请求 UserController 的时候出现了这个问题。

Charles Zhang的主页 Charles Zhang | 初学一级 | 园豆:38
提问于:2015-04-16 17:15
< >
分享
最佳答案
0

在这儿 20             this._blogService = blogService; 定个断点

收获园豆:30
Launcher | 高人七级 |园豆:45045 | 2015-04-16 17:22

我的意思是这些参数是何时传入控制器的。注入进去的吗?

Charles Zhang | 园豆:38 (初学一级) | 2015-04-16 17:40

@Charles Zhang: “依赖注入的过程我已经弄明白了” -〉很明显,这个过程你还没弄明白!那么这里有几个问题你需要搞清楚:

1、它使用的依赖注入的框架是什么?

2、该框架使用的依赖注入的方式是什么?

3、接口的实现类在哪里?

Launcher | 园豆:45045 (高人七级) | 2015-04-16 17:43

@Launcher: 好吧,我再跟踪一下吧,就算是注入进去的不是也需要调用吗?

Charles Zhang | 园豆:38 (初学一级) | 2015-04-16 17:47

@Charles Zhang: 

我的意思是这些参数是何时传入控制器的” -〉构造 BlogController 实例的时候传入的。

这个回答正确,但是你觉得对你有帮助吗?因为你问的问题有问题,之所以有问题,是因为你没搞明白依赖注入。

Launcher | 园豆:45045 (高人七级) | 2015-04-16 17:50

@Charles Zhang: 

就算是注入进去的不是也需要调用吗?” -〉谁需要调用?需要调用谁?

Launcher | 园豆:45045 (高人七级) | 2015-04-16 17:55

@Launcher: 应该是我没说明白,我在缕缕。

Charles Zhang | 园豆:38 (初学一级) | 2015-04-16 17:57

@Charles Zhang: Nop 使用的是 Autofac ,Conroller 采用的是构造注入,要实现注入,比如有配置,这个配置可以是配置文件,也可以是代码,你可以在代码和配置文件中都去找找。

Launcher | 园豆:45045 (高人七级) | 2015-04-16 18:09

@Launcher: 我找到问题了,貌似我忘记注入数据库服务了

Charles Zhang | 园豆:38 (初学一级) | 2015-04-16 18:11
其他回答(2)
0

依赖注入,Autofac 插件在 Nop.Web.Framework  的 DependencyRegistrar 进行注入,其后编写构造器的时候添加对应的接口即可。

详情可以留意 nopCommerce中文网-教程

Nopcn | 园豆:222 (菜鸟二级) | 2017-02-28 23:29
0

Nop.Web.Framework  的 DependencyRegistrar: 

builder.RegisterControllers(typeFinder.GetAssemblies().ToArray());    

老董 | 园豆:202 (菜鸟二级) | 2018-03-21 13:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册