nopcommerce笔记1

在Application_Start中依次的调用是:

EngineContext.Initialize

new NopEngine

ContainerConfigurer.Configure

NopEngine.Initialize

 

ContainerConfigurer.Configure在NopEngine的构造函数调用:

public NopEngine(EventBroker broker, ContainerConfigurer configurer)
{
var config = ConfigurationManager.GetSection("NopConfig") as NopConfig;
InitializeContainer(configurer, broker, config);//这里面调用了ContainerConfigurer.Configure
}

 

private void InitializeContainer(ContainerConfigurer configurer, EventBroker broker, NopConfig config)
{
var builder = new ContainerBuilder();

_containerManager = new ContainerManager(builder.Build());
configurer.Configure(this, _containerManager, broker, config);
}

我当时有一个想法,为什么不把IEngine的接口void Initialize(NopConfig config);设计成:

void Initialize(NopConfig config,ContainerConfigurer configurer, EventBroker broker);

把在构造函数中的configurer.Configure调用移到Initialize中。

后来一想,这样会失去通用性,因为ContainerConfigurer 、EventBroker 的功能并非必须的。

非要移到Initialize中也不是不可,可以做一个实现IEngine的自己的类。

posted on 2013-11-07 09:56  whwqs  阅读(277)  评论(0编辑  收藏  举报

导航