zoukankan      html  css  js  c++  java
  • 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的自己的类。

  • 相关阅读:
    枚举
    IOS uitableview代理方法
    IOS图片拉伸模式
    IOS单例的设计模式
    圆角属性
    IOS 随机数
    IOS正则表达式
    添加 分类 自动适配图片
    用grep查找文件内容
    Openscada远程配置
  • 原文地址:https://www.cnblogs.com/whwqs/p/3411870.html
Copyright © 2011-2022 走看看