protected virtual void OnInit(IStartupSetting startupSetting) { var appSetting = ConfigSectionHandler.GetConfig("htb.devfx"); var setting = startupSetting ?? appSetting.ToSetting <StartupSetting>("startup"); var assemblies = new List <Assembly>(); if (setting != null && setting.CoreSetting != null && setting.CoreSetting.ConfigServiceSetting != null && setting.CoreSetting.ConfigServiceSetting.Assemblies != null) { var assemblySettings = setting.CoreSetting.ConfigServiceSetting.Assemblies; foreach (var assembly in assemblySettings) { var dll = TypeHelper.AssemblyLoad(assembly.AssemblyName, false); if (dll != null && !assemblies.Contains(dll)) { assemblies.Add(dll); } } } var rootSetting = ConfigHelper.LoadConfigSettingFromAssemblies(new[] { typeof(Esb.IServiceLocator).Assembly, typeof(ConfigService).Assembly }, assemblies, appSetting, setting); setting = rootSetting.ToSetting <StartupSetting>("htb.devfx/startup"); IConfigServiceSetting configServiceSetting = null; if (setting != null && setting.CoreSetting != null && setting.CoreSetting.ConfigServiceSetting != null) { configServiceSetting = setting.CoreSetting.ConfigServiceSetting; if (setting.CoreSetting.ConfigServiceSetting.ConfigFiles != null && setting.CoreSetting.ConfigServiceSetting.ConfigFiles.Length > 0) { var configFiles = new List <string>(); foreach (var fileSetting in setting.CoreSetting.ConfigServiceSetting.ConfigFiles) { var files = FileHelper.SearchFileWithPattern(fileSetting.FileName, SearchOption.AllDirectories, AppDomain.CurrentDomain.SetupInformation.ApplicationBase); if (files != null && files.Length > 0) { configFiles.AddRange(files); } } foreach (var fileName in configFiles) { var configSetting = ConfigHelper.CreateFromXmlFile(fileName); rootSetting.Merge(configSetting); } } } ConfigSettingInherit(rootSetting["htb.devfx"], new List <IConfigSetting>(), new List <IConfigSetting>()); this.Settings = rootSetting; if (configServiceSetting != null && configServiceSetting.Debug != null && configServiceSetting.Debug.Enabled) { var outputFileName = configServiceSetting.Debug.FileName; if (!string.IsNullOrEmpty(outputFileName)) { outputFileName = FileHelper.GetPhysicalPath(".", outputFileName, true); File.WriteAllText(outputFileName, rootSetting.ToString()); } } }
private static IObjectService Setup() { IStartupSetting setting = ConfigSectionHandler.GetConfig("htb.devfx").ToSetting <StartupSetting>("startup"); string configServiceTypeName = null; string objectServiceTypeName = null; if (setting != null && setting.CoreSetting != null) { if (setting.CoreSetting.ConfigServiceSetting != null) { configServiceTypeName = setting.CoreSetting.ConfigServiceSetting.TypeName; } if (setting.CoreSetting.ObjectServiceSetting != null) { objectServiceTypeName = setting.CoreSetting.ObjectServiceSetting.TypeName; } } IConfigService configServiceInstance = null; if (!string.IsNullOrEmpty(configServiceTypeName)) { configServiceInstance = (IConfigService)TypeHelper.CreateObject(configServiceTypeName, typeof(IConfigService), false); } if (configServiceInstance == null) { configServiceInstance = Config.ConfigService.Default; } if (configServiceInstance is IConfigServiceInternal) { ((IConfigServiceInternal)configServiceInstance).Init(setting); } else if (configServiceInstance is IInitializable) { ((IInitializable)configServiceInstance).Init(); } IObjectService objectServiceInstance = null; if (!string.IsNullOrEmpty(objectServiceTypeName)) { objectServiceInstance = (IObjectService)TypeHelper.CreateObject(objectServiceTypeName, typeof(IObjectService), false); } if (objectServiceInstance == null) { objectServiceInstance = new DefaultObjectService(); } if (objectServiceInstance is IObjectServiceInternal) { ((IObjectServiceInternal)objectServiceInstance).Init(configServiceInstance); } else if (objectServiceInstance is IInitializable) { ((IInitializable)objectServiceInstance).Init(); } return(objectServiceInstance); }
void IInitializable <IStartupSetting> .Init(IStartupSetting startupSetting) { this.Init(startupSetting); }
protected virtual void Init(IStartupSetting startupSetting) { ThreadHelper.ThreadSafeExecute(this, () => this.Settings == null, () => this.OnInit(startupSetting)); }
protected override void OnInit() { this.objectNamespaces = new Dictionary <string, ObjectNamespace>(); this.globalObjectNamespace = new ObjectNamespace(GlobalObjectNamespaceName); this.objectNamespaces.Add(GlobalObjectNamespaceName, this.globalObjectNamespace); this.ObjectBuilder = new ObjectBuilderInternal(this); ILifetimeContainer configServiceLifetime = new SingletonLifetimeContainer(); configServiceLifetime.Init(null, this.ObjectBuilder); configServiceLifetime.SetObject(this.ConfigService); var configServiceType = typeof(IConfigService); this.globalObjectNamespace.TypedObjects.Add(configServiceType, configServiceLifetime); ILifetimeContainer objectServiceLifetime = new SingletonLifetimeContainer(); objectServiceLifetime.Init(null, this.ObjectBuilder); objectServiceLifetime.SetObject(this); var objectServiceType = typeof(IObjectService); this.globalObjectNamespace.TypedObjects.Add(objectServiceType, objectServiceLifetime); IStartupSetting setting = this.ConfigService.ToSetting <IObjectService, StartupSetting>(); if (setting == null || setting.CoreSetting == null || setting.CoreSetting.ObjectServiceSetting == null) { return; } var objectServiceSetting = setting.CoreSetting.ObjectServiceSetting; if (objectServiceSetting.Extenders != null && objectServiceSetting.Extenders.Length > 0) { foreach (var extenderSetting in objectServiceSetting.Extenders) { if (!extenderSetting.Enabled) { continue; } var extender = (IObjectExtender <IObjectService>)TypeHelper.CreateObject(extenderSetting.TypeName, typeof(IObjectExtender <IObjectService>), false); if (extender != null) { extender.Init(this); } } } this.OnPreInit(); if (objectServiceSetting.ObjectNamespace == null) { return; } var spaceSetting = objectServiceSetting.ObjectNamespace; var spaceSettings = new Dictionary <ObjectNamespace, IObjectNamespaceSetting> { { this.globalObjectNamespace, spaceSetting } }; this.InitNamespace(spaceSetting, GlobalObjectNamespaceName, spaceSettings); this.InitTypeAliases(spaceSettings); this.InitConstAliases(spaceSettings); this.InitObjectAliases(spaceSettings, x => { if (objectServiceType.IsAssignableFrom(x)) { return(objectServiceLifetime); } if (configServiceType.IsAssignableFrom(x)) { return(configServiceLifetime); } return(null); }); }