示例#1
0
        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));
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }