public static bool SaveConfig <T>(T t) where T : class, new() { 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: configFilePath = HttpContext.Current.Server.MapPath(attribute.FileName); break; default: configFilePath = configSettings.GetConfigFilePath <T>(); break; } XmlConfigGetParameter getParameter = new XmlConfigGetParameter(configFilePath, attribute.IncludeSubdirectories); return(ObjectXmlSerializer.SaveXmlToFlie <T>(getParameter.FilePaths, t)); }
/// <summary> /// 获取配置文件根路径。 /// </summary> /// <returns>配置文件根路径。</returns> public string GetConfigFileRootPath <T>() where T : class { bool supportMultiLanguages = false; Type configType = typeof(T); ConfigFileAttribute configFileAttribute = AttributeHelper.GetConfigAttribute <ConfigFileAttribute>(configType); if (configFileAttribute != null) { supportMultiLanguages = configFileAttribute.SupportMultiLanguages; } string path = ""; string fileMappingPath = ""; string groupMappingPath = ""; // 获取所有文件映射 FileMappingCollection fileMappings = GetFileMappings(); FileMapping fileMapping = null; if (fileMappings.Contains(configType.Name)) { fileMapping = fileMappings.Get(configType.Name); } else if (fileMappings.Contains(configType.FullName)) { fileMapping = fileMappings.Get(configType.FullName); } if (fileMapping != null) { fileMappingPath = fileMapping.Path; groupMappingPath = fileMapping.FileGroupMapping.Path; } if (fileMappingPath != "") { path = GetConfigPath(fileMappingPath); } else if (groupMappingPath != "") { path = GetConfigPath(groupMappingPath); } else { path = supportMultiLanguages ? MultiLanguageRootPath : RootPath; } return(supportMultiLanguages ? string.Format("{0}/{1}", path, ApplicationContext.LanguageCode) : path); }
/// <summary> /// /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public string GetConfigFilePath <T>() where T : class, new() { ConfigFileAttribute configFileAttribute = AttributeHelper.GetConfigAttribute <T, ConfigFileAttribute>(); if (configFileAttribute == null) { ConfigThrowHelper.ThrowConfigException(R.ConfigError_NoConfigAttribute, typeof(T).FullName, typeof(ConfigFileAttribute).FullName); } string rootPath = GetConfigFileRootPath <T>(); return(string.Format("{0}/{1}", rootPath.TrimEnd('/', '\\'), configFileAttribute.FileName.TrimStart('/', '\\'))); }
/// <summary> /// 获取配置属性。 /// </summary> /// <typeparam name="TAttribute">表示配置属性类型。</typeparam> /// <param name="configType">配置类型。</param> /// <returns>配置属性。</returns> public static TAttribute GetConfigAttribute <TAttribute>(Type configType) where TAttribute : ConfigFileAttribute { Check.Argument.IsNotNull("configType", configType); ConfigFileAttribute configFileAttribute = null; if (!typeConfigFileAttributes.TryGetValue(configType, out configFileAttribute)) { lock (syncObj) { if (!typeConfigFileAttributes.TryGetValue(configType, out configFileAttribute)) { configFileAttribute = Attribute.GetCustomAttribute(configType, typeof(ConfigFileAttribute)) as ConfigFileAttribute; if (configFileAttribute != null) { typeConfigFileAttributes.Add(configType, configFileAttribute); } } } } return(configFileAttribute as TAttribute); }