propertyinfo

  

概述反射和序列化?


  反射和序列化是不同的。  反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性   序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。   ????  

c#中 怎样才能common的gettype方法


  1  2  3  4  5  6  7  8  通过PropertyInfo类的PropertyType属性判断  foreach (PropertyInfo pi in propertys)  {  //判断属性是否为bool类型  if (pi.PropertyType == typeof(bool))  {  }  }  

如何由XSD自动生成XML和实体类


  自动读取XML数据到实体类:  - 可以用工具,如XMLSpy,首先打开XML, 然后DTD/Schema -> Generate DTD/Schema, 选择W3c Sehcma即可。  - 此方法不一定能生成确切满足需求的XSD,另需修改。  - 如何自动给类每个属性设置一个空值:(用反射的方法)代码示例:////// Get all properties and set default value //////Type///Objectprivatestaticvoid ReflctProperties(T item) { PropertyInfo[] pty =typeof(T).GetProperties(); Type t  

.net泛型和Data互转?


   private static DataTable CreateData(T model)   {   DataTable dataTable = new DataTable(typeof(T).Name);   foreach (PropertyInfo propertyInfo in typeof(T).GetProperties())   {   if (propertyInfo.Name != "CTimestamp")//些字段为oracle中的Timesstarmp类型   {   dataTable.Columns.Add(new DataColumn(propertyInfo.Name, propertyInfo.PropertyType));   }   else   {   dataTable.Columns.Add(new DataColumn(propertyInfo.Name, typeof(DateTime)));   }   }   return dataTable;   }  

c#中GetValue这个方法是什么意思


  C#反射技术的简单操作(读取和设置类的属性)  public?class?A?  ???????{?  ???????????public?int?Property1?{?get;?set;?}?  ???????}?  static?void?Main(){?  ???????????A?aa?=?new?A();?  ???????????Type?type?=?aa.GetType();//获取类型?  ???????????System.Reflection.PropertyInfo?propertyInfo?=?type.GetProperty("Property1");?  ???????????propertyInfo.SetValue(aa,?5,?null);//给对应属性赋值?  ???????????int?value?=?(int)propertyInfo.GetValue(aa,?null);?  ???????????Console.WriteLine(value?);?  }  少量属性的自动化操作手动添加几下当然是没有问题的,但是属性数量较多的时候敲起这些繁锁的代码可以困了,再说对扩展和维护性造成很多的不便,这时,就需要使用反射来实现了。  要想对一个类型实例的属性或字段进行动态赋值或取值,首先得得到这个实例或类型的Type,微软已经为我们提供了足够多的方法。  首先建立一个测试的类  public?class?MyClass?  {?  public?int?one?{?set;?get;?}?  public?int?two?{?set;?get;?}?  public?int?five?{?set;?get;?}?  public?int?three?{?set;?get;?}?  public?int?four?{?set;?get;?}?  }  MyClass?obj?=?new?MyClass();?  Type?t?=?typeof(MyClass);?  //循环赋值?  int?i?=?0;?  foreach?(var?item?in?t.GetProperties())?  {?  item.SetValue(obj,?i,?null);?  i?+=?1;?  }?  //单独赋值?  t.GetProperty("five").SetValue(obj,?11111111,?null);?  //循环获取?  StringBuilder? *** ?=?new?StringBuilder();?  foreach?(var?item?in?t.GetProperties())?  {?   *** .Append("类型:"?+?item.PropertyType.FullName?+?"?属性名:"?+?item.Name?+?"?值:"?+?item.GetValue(obj,?null)?+?"");?  }?  //单独取值?  int?five?=?Convert.ToInt32(t.GetProperty("five").GetValue(obj,?null));?   *** .Append("单独取five的值:"?+?five);?  string?result?=? *** .ToString();?  Response.Write(result);?  测试显示结果:?  类型:System.Int32 属性名:one 值:0?  类型:System.Int32 属性名:two 值:1?  类型:System.Int32 属性名:five 值:11111111?  类型:System.Int32 属性名:three 值:3?  类型:System.Int32 属性名:four 值:4?  单独取five的值:11111111  

概述反射和序列化?


  反射和序列化是不同的。  反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性   序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。   ????  

如何使用PropertyInfo GetValue


  Response.Write(info.GetValue(Item,null));//这样写。。  多看看反射。。这是最简单的应用了。