/// <summary> /// /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public override T GetConfig <T>() { DotNetConfigFileAttribute attribute = AttributeHelper.GetConfigAttribute <DotNetConfigFileAttribute>(typeof(T)); if (attribute == null) { ConfigThrowHelper.ThrowConfigException( R.ConfigError_NoConfigAttribute, typeof(T).FullName, typeof(DotNetConfigFileAttribute).FullName); } ConfigSettings configSettings = FrameworkConfig.GetConfig <ConfigSettings>(); string configFilePath = configSettings.GetConfigFilePath <T>(); DotNetConfigGetParameter getParameter = new DotNetConfigGetParameter(configFilePath, attribute.SectionName); return(GetConfig <T>(getParameter, attribute.RestartAppDomainOnChange)); }
/// <summary> /// /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public override T GetConfig <T>() { ConfigFileAttribute attribute = AttributeHelper.GetConfigAttribute <ConfigFileAttribute>(typeof(T)); if (attribute == null) { ConfigThrowHelper.ThrowConfigException( R.ConfigError_NoConfigAttribute, typeof(T).FullName, typeof(ConfigFileAttribute).FullName); } ConfigSettings configSettings = FrameworkConfig.GetConfig <ConfigSettings>(); string configFilePath = string.Empty; switch (attribute.ConfigPathType) { case ConfigPathType.FullPhysicalPath: { configFilePath = attribute.FileName; } break; case ConfigPathType.ServerPath: if (HttpContext.Current == null) { configFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, attribute.FileName.Replace("~/", "")); break; } configFilePath = HttpContext.Current.Server.MapPath(attribute.FileName); break; default: { configFilePath = configSettings.GetConfigFilePath <T>(); } break; } XmlConfigGetParameter getParameter = new XmlConfigGetParameter(configFilePath, attribute.IncludeSubdirectories); return(GetConfig <T>(getParameter, attribute.RestartAppDomainOnChange)); }
/// <summary> /// /// </summary> /// <typeparam name="T"></typeparam> /// <param name="getParameter"></param> /// <param name="restartAppDomainOnChange"></param> /// <returns></returns> public override T GetConfig <T>(IConfigParameter getParameter, bool restartAppDomainOnChange) { Check.Argument.IsNotNull("getParameter", getParameter); Check.Argument.IsAssignableFrom("getParameter", getParameter, typeof(XmlConfigGetParameter)); T config = GetConfigFromCache <T>(getParameter); if (config == null) { lock (this.SyncLock) { config = GetConfigFromCache <T>(getParameter); if (config == null) { XmlConfigGetParameter cp = getParameter as XmlConfigGetParameter; if (cp.Files.Length > 0) { if (cp.Files.Length == 1) { try { config = Serializer.XmlSerializer.FromFile <T>(cp.Files[0]); } catch (Exception ex) { ConfigThrowHelper.ThrowConfigException(ex, R.ConfigFileNotResolved, cp.Files[0], typeof(T).FullName); } } else { try { FileMergeResult fileMergeResult = XmlUtils.MergeFiles(new List <string>(cp.Files)); if (!fileMergeResult.AllFilesMerged) { //Logger.Warning("Framework.Configuration", "XMLConfigProvider", fileMergeResult.ToString()); } if (fileMergeResult.HasFileMerged) { config = Serializer.XmlSerializer.FromSerializedString <T>(fileMergeResult.FileContentMerged); } else { //Logger.Error("Framework.Configuration", "XMLConfigProvider", fileMergeResult.ToString()); } } catch (Exception ex) { ConfigThrowHelper.ThrowConfigException(ex, R.ConfigFileNotResolved, cp.FilePaths, typeof(T).FullName); } } AddConfigToCache(getParameter, config); SetupWacher(new XmlConfigChangeWatcher(cp)); } } } } return(config); }