/// <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(DotNetConfigGetParameter)); T config = GetConfigFromCache <T>(getParameter); if (config == null) { lock (this.SyncLock) { config = GetConfigFromCache <T>(getParameter); if (config == null) { DotNetConfigGetParameter parameter = getParameter as DotNetConfigGetParameter; Check.Argument.IsTrue(parameter.HasFiles, "getParameter", R.ConfigFileNotSpecified); System.Configuration.Configuration configuration = GetConfiguration(parameter.Files[0]); config = configuration.GetSection(parameter.SectionName) as T; Check.Argument.IsNotNull("getParameter", config, R.DotNetConfigCannotBeResolved, parameter.Files[0], parameter.SectionName); AddConfigToCache(getParameter as IConfigParameter, config); SetupWacher(new DotNetConfigChangeWatcher(parameter, restartAppDomainOnChange)); } } } return(config); }
/// <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> /// <returns></returns> protected override DateTime GetCurrentLastWriteTime() { DateTime lastWriteTime = DateTime.MinValue; DateTime lastWriteTimeMax = DateTime.MinValue; DotNetConfigGetParameter getParameter = this.GetParameter as DotNetConfigGetParameter; string lastFilePaths = getParameter.FilePaths; getParameter.RefreshFiles(); string currentFilePaths = getParameter.FilePaths; if (lastFilePaths == currentFilePaths) { foreach (string file in getParameter.Files) { if (File.Exists(file)) { lastWriteTime = File.GetLastWriteTime(file); if (lastWriteTimeMax.CompareTo(lastWriteTime) == -1) { lastWriteTimeMax = lastWriteTime; } } else { lastWriteTimeMax = DateTime.MaxValue; break; } } } else { lastWriteTimeMax = DateTime.MaxValue; } return(lastWriteTimeMax); }
/// <summary> /// /// </summary> /// <param name="getParameter"></param> /// <param name="restartAppDomainOnChange"></param> public DotNetConfigChangeWatcher(DotNetConfigGetParameter getParameter, bool restartAppDomainOnChange) : base(getParameter, restartAppDomainOnChange) { }
/// <summary> /// /// </summary> /// <param name="getParameter"></param> public DotNetConfigChangeWatcher(DotNetConfigGetParameter getParameter) : base(getParameter) { }
/// <summary> /// /// </summary> /// <param name="getParameter"></param> /// <param name="restartAppDomainOnChange"></param> public DotNetConfigChangeWatcher(DotNetConfigGetParameter getParameter, bool restartAppDomainOnChange) : base(getParameter, restartAppDomainOnChange) { }
/// <summary> /// /// </summary> /// <param name="getParameter"></param> public DotNetConfigChangeWatcher(DotNetConfigGetParameter getParameter) : base(getParameter) { }