C#中PropertyGrid控件绑定对象后更改属性值写回到xml中的一个有效方法
2016-01-17 13:24
621 查看
这两天项目开发过程中遇到的一个问题,就是PropertyGrid控件的对象的属性值修改后怎么写回到xml中的问题
由于属性项不统一,不能每个类的属性都去写一个单独的方法,这样需啊的类和方法就特别多,处理起来也特别麻烦,所以就想,能不能动态的知道一个类都有哪些属性呢,于是想到了反射。
要使用反射需要先引入命名空间 using System.Reflection;
我们可以用反射来得绑定类的所有属性,再将属性写回xml中。
/// <summary>
/// 更新xml文件
/// </summary>
/// <param name="obj">绑定PropertyGridUC的对象</param>
/// <param name="xmlPath">xml文件的路径</param>
/// <param name="root">路径</param>
private void updateXMLProperty(object obj, string xmlPath, string root)
{
//获取属性集合
PropertyInfo[] propertyInfoArray = obj.GetType().GetProperties();
XmlDocument
4000
doc = new XmlDocument();
doc.Load(xmlPath);
XmlNode node = doc.SelectSingleNode(root); ;
XmlElement xe = (XmlElement)node;
foreach (PropertyInfo property in propertyInfoArray)
{
string value="";
try
{
//获取属性的值
value = property.GetValue(obj, null).ToString();
}
catch
{
value = "";
}
xe.SetAttribute(property.Name, value);
}
doc.Save(xmlPath);
}
由于属性项不统一,不能每个类的属性都去写一个单独的方法,这样需啊的类和方法就特别多,处理起来也特别麻烦,所以就想,能不能动态的知道一个类都有哪些属性呢,于是想到了反射。
要使用反射需要先引入命名空间 using System.Reflection;
我们可以用反射来得绑定类的所有属性,再将属性写回xml中。
/// <summary>
/// 更新xml文件
/// </summary>
/// <param name="obj">绑定PropertyGridUC的对象</param>
/// <param name="xmlPath">xml文件的路径</param>
/// <param name="root">路径</param>
private void updateXMLProperty(object obj, string xmlPath, string root)
{
//获取属性集合
PropertyInfo[] propertyInfoArray = obj.GetType().GetProperties();
XmlDocument
4000
doc = new XmlDocument();
doc.Load(xmlPath);
XmlNode node = doc.SelectSingleNode(root); ;
XmlElement xe = (XmlElement)node;
foreach (PropertyInfo property in propertyInfoArray)
{
string value="";
try
{
//获取属性的值
value = property.GetValue(obj, null).ToString();
}
catch
{
value = "";
}
xe.SetAttribute(property.Name, value);
}
doc.Save(xmlPath);
}
相关文章推荐
- Python动态类型的学习---引用的理解
- c#调用COM组件
- XML 与 JSON 优劣对比
- As3.0 xml + Loader应用代码
- 土人系列AS入门教程 -- 对象篇
- flex 控件的重要属性
- C#实现把指定数据写入串口
- C#动态创建button的方法
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- 网马生成器 MS Internet Explorer XML Parsing Buffer Overflow Exploit (vista) 0day
- C#使用加边法计算行列式的值
- C#实现多线程的同步方法实例分析
- ext读取两种结构的xml的代码
- C#中尾递归的使用、优化及编译器优化
- C#实现子窗体与父窗体通信方法实例总结
- C#通用邮件发送类分享
- C#中this的用法集锦
- C#数据结构之顺序表(SeqList)实例详解