/// <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); } } }
/// <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); }