internal static IConfigSetting LoadConfigSettingFromAssemblies(Assembly[] coreAssemblies, List <Assembly> assemblies, IConfigSetting appSetting, IConfigSettingRequired setting) { if (appSetting == null) { appSetting = ConfigSectionHandler.GetConfig("htb.devfx"); } if (assemblies == null) { assemblies = new List <Assembly>(); } assemblies = SortAssemblies(assemblies, TypeHelper.GetAssembliesByCustomAttribute(typeof(ConfigResourceAttribute))); for (var i = coreAssemblies.Length - 1; i >= 0; i--) { var coreAssembly = coreAssemblies[i]; if (assemblies.IndexOf(coreAssembly) != 0) { assemblies.Remove(coreAssembly); assemblies.Insert(0, coreAssembly); } } var resources = new List <ConfigResourceAttribute>(); foreach (var assembly in assemblies) { var attributes = assembly.GetCustomAttributes(typeof(ConfigResourceAttribute), true) as ConfigResourceAttribute[]; if (attributes != null && attributes.Length > 0) { foreach (var attribute in attributes) { attribute.Assembly = assembly; } var attributeList = new List <ConfigResourceAttribute>(attributes); attributeList.Sort(CompareConfigResourceAttributeByIndex); resources.AddRange(attributeList); } } var rootSetting = CreateFromXmlString("<configuration><htb.devfx /></configuration>"); foreach (var resource in resources) { var configSetting = CreateFromXmlSource(resource.Resource, resource.Assembly); rootSetting.Merge(configSetting); } IConfigSetting userRootSetting = null; if (setting != null && setting.ConfigSetting != null) { userRootSetting = setting.ConfigSetting.GetRootSetting(); } if (userRootSetting == null) { userRootSetting = appSetting; } if (userRootSetting != null) { var mergeSetting = rootSetting; if (userRootSetting.SettingName == "htb.devfx") { mergeSetting = rootSetting["htb.devfx"]; } if (mergeSetting != null) { mergeSetting.Merge(userRootSetting); } } return(rootSetting); }
internal static IConfigSetting LoadConfigSettingFromAssemblies(Assembly coreAssembly, List <Assembly> assemblies, IConfigSetting appSetting, IConfigSettingRequired setting) { return(LoadConfigSettingFromAssemblies(new [] { coreAssembly }, assemblies, appSetting, setting)); }