public IServiceContext Create(String contextName, ServiceContext parent, IBackgroundWorkerParamDelegate <IBeanContextFactory> registerPhaseDelegate, Type[] serviceModuleTypes) { ServiceContext context = new ServiceContext(GenerateUniqueContextName(contextName, null), parent); if (registerPhaseDelegate != null) { registerPhaseDelegate(this); } foreach (Type serviceModuleType in serviceModuleTypes) { RegisterBean(serviceModuleType); } IList <IBeanPreProcessor> preProcessors = parent.GetPreProcessors(); if (preProcessors != null) { for (int a = 0, size = preProcessors.Count; a < size; a++) { context.AddPreProcessor(preProcessors[a]); } } IList <IBeanPostProcessor> postProcessors = parent.GetPostProcessors(); if (postProcessors != null) { for (int a = 0, size = postProcessors.Count; a < size; a++) { context.AddPostProcessor(postProcessors[a]); } } beanContextInitializer.InitializeBeanContext(context, this); return(context); }