예제 #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();
            }
        }
예제 #2
0
        public void InitWe7()
        {
            IEnumerable <AppInfo> apps = _appDescriptorManager.GetApps();

            foreach (AppInfo info in apps)
            {
                if (info.IsEnable)
                {
                    IEnumerable <Assembly> assemblies = _appDescriptorManager.GetAppAssembly(info);
                    foreach (Assembly assembly in assemblies)
                    {
                        _factableRegister.RegisterHandlers(assembly);
                        break;
                    }
                }
            }
        }