先前写法
//定义一个获取反射内容的方法 保存时用到
//定义一个获取反射内容的方法 保存时用到
public void getreflectioninfo(Object o)
{
//Assembly.Load 方法参数为 命名空间名称
Assembly myAssembly = Assembly.Load(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Namespace);
Type[] typearr = myAssembly.GetTypes();//获取类型
Type type = myAssembly.GetType(o.GetType().FullName);
//获取类型的字段信息
FieldInfo[] myfields = type.GetFields();
//获取属性信息 非get set 可获取到
//PropertyInfo[] myproperties = type.GetProperties();
//针对属性get set提供的反射
PropertyInfo[] pi = o.GetType().GetProperties();
//对数据进行清空
this.xmlElementMap.Clear();
foreach (PropertyInfo pro in pi)
{
object val = pro.GetValue(o, null);
//如果值为null处理为""
if (val == null)
{
val = "";
}
XmlElementMap.Add(pro.Name, val);
//对于nodeId的处理
if (pro.Name.ToLower() == "id")
{
this.XmlnodeId = pro.GetValue(o, null).ToString();
}
}
this.ParentNodeName = type.Name + "s";
this.XmlNodeName = type.Name;
}
其中
//获取属性信息 非get set 可获取到 //PropertyInfo[] myproperties = type.GetProperties();
红色部分为先前无法访问get set的代码
//针对属性get set提供的反射 PropertyInfo[] pi = o.GetType().GetProperties();
绿色部分为修改后可以访问get set 的代码