Ejemplo n.º 1
0
        /// <summary>
        /// 保存时 对当前配置项进行赋值
        /// </summary>
        /// <param name="item">当前配置项</param>
        /// <param name="ListOptions">配置项值</param>
        /// <param name="AfterSave">是否调用保存后方法</param>
        public void SetValue(ConfigOption item, List <Options> ListOptions, bool AfterSave = true)
        {
            if (AfterSave)
            {
                //调用保存后处理事件
                item.AfterSave(ListOptions);
            }
            //获取本地化配置
            var     localConfigList = ConfigService.GetAllLocalOptions(item.GroupType);
            var     desc            = ConfigDescriptionCache.GetTypeDiscription(item.GetType());
            Options option          = null;

            foreach (PropertyInfo prop in desc.StaticPropertyInfo)
            {
                option = ListOptions.FirstOrDefault(e => e.Key.Equals(prop.Name, StringComparison.OrdinalIgnoreCase));
                if (option == null)
                {
                    //不存在该配置项,则清空当前值
                    prop.SetValue(null, ConvertScalar(null, prop.PropertyType), null);
                }
                else
                {
                    var    localConfig = localConfigList.FirstOrDefault(e => e.Key.Equals(prop.Name, StringComparison.OrdinalIgnoreCase));
                    string optionValue = option.Value;
                    if (localConfig != null)
                    {
                        optionValue = localConfig.Value;
                    }
                    prop.SetValue(null, ConvertScalar(optionValue, prop.PropertyType), null);
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 初始化系统参数配置信息
        /// </summary>
        public void Init()
        {
            //所有选项值
            List <Options> listOption = ConfigService.GetAllOptions();

            ConfigDescription desc = null;

            //代码现有配置项
            foreach (ConfigOption item in AllConfig)
            {
                //反射读取配置项ConfigTypeAttribute  ConfigAttribute 信息
                desc = ConfigDescriptionCache.GetTypeDiscription(item.GetType());

                //设置当前配置项的GroupType
                desc.GroupTypePropertyInfo.SetValue(item, ConvertScalar(desc.Group, desc.GroupTypePropertyInfo.PropertyType), null);

                //每项值信息
                List <Options>  itemOptions = listOption.Where(e => e.OptionType.Equals(desc.Group, StringComparison.OrdinalIgnoreCase)).ToList();
                Options         op          = null;
                ConfigAttribute ca          = null;
                foreach (PropertyInfo prop in desc.StaticPropertyInfo)
                {
                    op = itemOptions.FirstOrDefault(e1 => e1.Key.Equals(prop.Name, StringComparison.OrdinalIgnoreCase));
                    ca = desc.MemberDict[prop.Name];
                    if (op == null)
                    {
                        //设置默认值
                        prop.SetValue(null, ConvertScalar(ca.DefaultValue, prop.PropertyType), null);
                    }
                    else
                    {
                        prop.SetValue(null, ConvertScalar(op.Value, prop.PropertyType), null);
                    }
                }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 获取所有配置信息
        /// </summary>
        /// <returns>所有配置信息</returns>
        public List <OptionViewModel> GetAllOption(string GroupType = "")
        {
            //所有选项值
            List <Options> listOption = ConfigService.GetAllOptions(GroupType);

            IEnumerable <Tags> listTags = TagService.GetTags(ConfigHandler);

            IEnumerable <ConfigOption> listConfigs = AllConfig;

            if (!string.IsNullOrEmpty(GroupType))
            {
                listConfigs = AllConfig.Where(e => e.GroupType.Equals(GroupType, StringComparison.OrdinalIgnoreCase));
            }

            ConfigDescription desc = null;

            //分组信息
            OptionGroup     optionGroup = null;
            Options         op          = null;
            ConfigAttribute ca          = null;

            List <OptionViewModel> result = new List <OptionViewModel>();
            OptionViewModel        itemOptionViewModel = null;

            //代码现有配置项
            foreach (ConfigOption item in listConfigs)
            {
                //反射读取配置项ConfigTypeAttribute  ConfigAttribute 信息
                desc = ConfigDescriptionCache.GetTypeDiscription(item.GetType());

                itemOptionViewModel = new OptionViewModel();
                optionGroup         = new OptionGroup {
                    GroupType = desc.Group, GroupName = desc.GroupCn, CustomPage = desc.CustomPage
                };
                optionGroup.ImmediateUpdate      = desc.ImmediateUpdate;
                itemOptionViewModel.Group        = optionGroup;
                itemOptionViewModel.FunctionType = desc.FunctionType;
                itemOptionViewModel.ListOptions  = new List <Options>();

                //每项值信息
                List <Options> itemOptions = listOption.Where(e => e.OptionType.Equals(desc.Group, StringComparison.OrdinalIgnoreCase)).ToList();

                foreach (PropertyInfo prop in desc.StaticPropertyInfo)
                {
                    op = itemOptions.FirstOrDefault(e1 => e1.Key.Equals(prop.Name, StringComparison.OrdinalIgnoreCase));
                    ca = desc.MemberDict[prop.Name];

                    if (op == null)
                    {
                        op = new Options
                        {
                            OptionType = desc.Group,
                            OptionName = ca.Name,
                            Key        = prop.Name,
                            Value      = Convert.ToString(ca.DefaultValue)
                        };
                    }
                    //必填设置
                    op.Required = ca.Required;
                    //校验规则
                    op.ValidateRule = ca.ValidateRule;
                    //悬浮title
                    op.Title      = ca.Title;
                    op.Valuetype  = Convert.ToInt32(ca.ValueType).ToString();
                    op.OptionName = ca.Name;
                    op.DataSource = ca.DataSource == null ? null : JsonConvert.DeserializeObject(ca.DataSource);
                    op.FormatDate = ca.FormatDate;
                    itemOptionViewModel.ListOptions.Add(op);
                    itemOptionViewModel.TagList = listTags.Where(e => e.SourceId == itemOptionViewModel.Group.GroupType).ToList();
                }
                result.Add(itemOptionViewModel);
            }
            return(result.OrderBy(e => e.Group.GroupType).ToList());
        }