动态数据类型转换

    xiaoxiao2022-07-08  154

    这是我的工具包里的一部分代码

    部分方法已被我移值到我的框架去,做为实体的基类的默认方法。

     

    using  System; using  System.Collections.Generic; using  System.Text; using  System.Web.UI; using  System.Reflection; using  System.Web.UI.WebControls; namespace  Toolkit {      ///   <summary>      ///  表的字段设置/获到值操作类      ///   </summary>      public   class  TableValue     {         Object entity; // 实体对象         Type typeInfo; // 实体对象类型          ///   <summary>          ///  表的字段设置/获到值操作类构造函数          ///   </summary>          ///   <param name="entityInstance"> 传进表的实体 </param>          public  TableValue(Object entityInstance)         {             entity  =  entityInstance;             typeInfo  =  entity.GetType();         }          ///   <summary>          ///  将实体的值设置到控件中          ///   </summary>          ///   <param name="ct"></param>          public   void  SetTo(Control ct)         {              string  propName  =  ct.ID.Substring( 3 );              object  value  =  GetPropertyValue(propName);              switch  (ct.GetType().Name)             {                  case   " TextBox " :                     ((TextBox)ct).Text  =  Convert.ToString(value);                      break ;                  case   " Literal " :                     ((Literal)ct).Text  =  Convert.ToString(value);                      break ;                  case   " Label " :                     ((Label)ct).Text  =  Convert.ToString(value);                      break ;                  case   " DropDownList " :                     ((DropDownList)ct).SelectedValue  =  Convert.ToString(value);                      break ;                  case   " CheckBox " :                      bool  tempValue;                      if  (Convert.ToString(value)  ==   " 1 " )                     {                         tempValue  =   true ;                     }                      else                     {                          bool .TryParse(Convert.ToString(value),  out  tempValue);                     }                     ((CheckBox)ct).Checked  =  tempValue;                      break ;             }                     }          ///   <summary>          ///  将控件的值设置到实体中[默认从控件中自动获取值]          ///   </summary>          ///   <param name="ct"> 控件 </param>          ///   <param name="value"> 自定义值,若此值存在,则不从控件中获取值 </param>          public   void  GetFrom(Control ct,  object  value)         {              string  propName  =  ct.ID.Substring( 3 );              if  (value  ==   null )             {                  switch  (ct.GetType().Name)                 {                      case   " TextBox " :                         value  =  ((TextBox)ct).Text.Trim();                          break ;                      case   " Literal " :                         value = ((Literal)ct).Text;                          break ;                      case   " Label " :                         value  =  ((Label)ct).Text;                          break ;                      case   " DropDownList " :                         value  =  ((DropDownList)ct).SelectedValue;                          break ;                      case   " CheckBox " :                         value  =  ((CheckBox)ct).Checked;                          break ;                 }             }             SetPropertyValue(propName, value);         }          ///   <summary>          ///  将控件的值设置到实体中          ///   </summary>          ///   <param name="ct"> 控件 </param>          public   void  GetFrom(Control ct)         {             GetFrom(ct,  null );         }          ///   <summary>          ///  获取对象指定属性的值          ///   </summary>          ///   <param name="obj"> 对象 </param>          ///   <param name="propName"> 属性名称 </param>          ///   <returns></returns>          private    object  GetPropertyValue( string  propName)         {             PropertyInfo prop  =  typeInfo.GetProperty(propName);              return  prop.GetValue(entity,  null );         }          ///   <summary>          ///  设置对象指定属性的值          ///   </summary>          ///   <param name="obj"> 对象 </param>          ///   <param name="propName"> 属性名称 </param>          ///   <returns></returns>          private   void  SetPropertyValue( string  propName,  object  value)         {             PropertyInfo prop  =  typeInfo.GetProperty(propName);             Type valueType  =   null ;              if  (prop.PropertyType.Name.Contains( " Nullable " ))             {                 valueType  =  Type.GetType(prop.PropertyType.FullName.Substring( 19 , prop.PropertyType.FullName.IndexOf( " , " -   19 ));             }              else             {                 valueType  =  prop.PropertyType;             }              try             {                  if  (valueType.Name  !=   " DateTime "   ||  Convert.ToString(value)  !=   "" )                 {                     value  =  System.ComponentModel.TypeDescriptor.GetConverter(valueType).ConvertFrom(Convert.ToString(value));                     prop.SetValue(entity, value,  null );                 }             }              catch             {             }         }     } }

     

     版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:

    http://www.cnblogs.com/cyq1162/archive/2010/04/18/1500639.html

    最新回复(0)