Example #1
0
        /// <summary>
        /// 根据配置节点信息设置字段的值
        /// </summary>
        /// <param name="configurationNode">配置节点的信息</param>
        public void SetField(ConfigurationNode configurationNode)
        {
            PropertyInfo[] propertyInfos = this.GetType().GetProperties();
            var            propertyInfo  = propertyInfos.SingleOrDefault(r => r.Name == configurationNode.ConfigurationName);

            if (propertyInfo != null)
            {
                object changeValue = configurationNode.Value;
                if (propertyInfo.PropertyType != typeof(string))
                {
                    changeValue = ChangeType(changeValue, propertyInfo.PropertyType);
                }
                if (propertyInfo.CanWrite && propertyInfo.DeclaringType != typeof(BaseConfiguration) && propertyInfo.DeclaringType != typeof(BaseInfo))
                {
                    propertyInfo.SetValue(this, changeValue, null);
                    this.RaisePropertyChanged(configurationNode.ConfigurationName);
                }
            }
        }
Example #2
0
        /// <summary>
        /// 获取所有配置节点信息
        /// </summary>
        /// <returns>所有配置节点信息</returns>
        public IEnumerable <ConfigurationNode> GetConfigurationNodes()
        {
            var lst = new List <ConfigurationNode>();

            PropertyInfo[] propertyInfos = this.GetType().GetProperties();
            foreach (var propertyInfo in propertyInfos)
            {
                if (propertyInfo.CanRead && propertyInfo.CanWrite && propertyInfo.DeclaringType != typeof(BaseConfiguration))
                {
                    var node = new ConfigurationNode
                    {
                        ConfigurationName = propertyInfo.Name,
                        Value             = this.GetPropertyValue(propertyInfo.Name),
                    };
                    lst.Add(node);
                }
            }

            return(lst);
        }