Ejemplo n.º 1
0
        public void Start(HttpApplication application)
        {
            //创建Container(含静态只读字段:Type Enumerable;MethodInfo _resolveAllMethod;只读字段IContainerStorage _storage)、                         ContainerStorage(含字段Dictionary<Type, object> _instanceList;Dictionary<Type, List<ComponentRegistration>>                                _registrationList; 静态对象字段 static object _locker)实例,
            IContainer container = CreateContainer();

            //静态类ContextContainer包含静态字段IAppContainerHolder _holder;SetContainer函数将container实例地址址,赋给application的
            //ContainerInstance属性
            ContainerContext.SetContainer(container, application as IAppContainerHolder);

            //调用Container的Register方法向ContainerStorage的实例_storage的_registrationList字段加入键值对
            container.Register <ObjectAssistantAccessorStorage>().Singleton().As <IObjectAssistantAccessorStorage>();
            container.Register <AutoFactory>().Singleton().As <IFactableRegister>();

            IFactableRegister register = container.Resolve <IFactableRegister>();

            foreach (string name in _preLoad)
            {
                register.RegisterHandlers(Assembly.Load(name));
            }

            IEnumerable <IWe7CmsInitializeModule> initializeModules =
                container.ResolveAll <IWe7CmsInitializeModule>();

            foreach (IWe7CmsInitializeModule module in initializeModules)
            {
                module.InitWe7();
            }
        }
Ejemplo n.º 2
0
 public AppLoader(IFactableRegister factableRegister,
                  IAppDescriptorManager appDescriptorManager)
 {
     _factableRegister     = factableRegister;
     _appDescriptorManager = appDescriptorManager;
 }