今天项目中有个功能要求得到多个数据类型实例的信息,如果通过大量判断和手工代码,将会是件很痛苦的工作.但是我使用反射得到实例类型,属性
名称,属性值,乃至方法名称这样就能使用很少的代码完成更多的事情.
假定有one,two,three三个不同结构对象需要展示数据,将它们的属性值一项项调用展示这样需要至少做三次,而如果对象属性够多的话,除开累之外,相信也更加容易出错.
其实要做的事情无非就是三步,第一,得知需要展示的对象的类型结构,第二,得到各属性值,第三,展示数据.
但是你有了实例,如何利用微软封装好的方法最优的完成第一二步呢?
现在我将Demo关键代码贴在下面,希望看后能够对大家有所帮助.
namespace UseAssemblyClassExample
{
public class Test1
{
public Test1()
{
id = 0;
name = "hhj";
age = "20";
time = DateTime.Now;
}
public int id { get; set; }
public string name { get; set; }
public string age { get; set; }
public DateTime time { get; set; }
}
}
public void WriteData()
{
object obj = Assembly.Load("UseAssemblyClassExample").CreateInstance("UseAssemblyClassExample.Test1");
System.Type type = obj.GetType();
PropertyInfo[] propertyies = type.GetProperties();
foreach (PropertyInfo pro in propertyies)
{
Console.Wirte(pro.Name + " 值: " + pro.GetValue(obj, null) + " 数据类型:" + pro.PropertyType.ToString() + System.Environment.NewLine);
}
}
输出结果
id 值: 0 数据类型:System.Int32
name 值: hhj 数据类型:System.String
age 值: 20 数据类型:System.String
time 值: 2010/5/17 22:34:01 数据类型:System.DateTime