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(); } }
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; } } } }