动态数据类型转换

简介:

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

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

 

复制代码
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

相关文章
|
5月前
|
安全 编译器 程序员
特殊类设计以及C++中的类型转换
特殊类设计以及C++中的类型转换
54 2
|
5月前
|
安全 编译器 C++
【C/C++ 类型转换规则】一文了解C/C++ 中的类型转换规则,帮助你更好的编程
【C/C++ 类型转换规则】一文了解C/C++ 中的类型转换规则,帮助你更好的编程
67 0
|
5月前
|
JavaScript 前端开发 Java
02 # 类型基础:强类型与弱类型
02 # 类型基础:强类型与弱类型
50 0
|
16天前
|
前端开发 JavaScript
前端基础(四)_数据类型的强制转换
本文探讨了JavaScript中数据类型的强制转换方法,包括将其他类型转换为Number类型(使用`Number`函数)、转换为String类型(使用`toString`方法或`String`函数)、以及转换为Boolean类型(使用`Boolean`函数)。同时,文章还讨论了`parseInt`和`parseFloat`函数用于从字符串中解析出整数或浮点数,以及`isNaN`函数用于检测一个值是否是非数字。
15 2
前端基础(四)_数据类型的强制转换
|
16天前
|
存储 前端开发 JavaScript
前端基础(三)_JavaScript数据类型(基本数据类型、复杂数据类型)
本文详细介绍了JavaScript中的数据类型,包括基本数据类型(Number、String、Boolean、Undefined、Null)和复杂数据类型(Object),并解释了如何使用`typeof`操作符来识别变量的数据类型。同时,还讨论了对象、函数和数组等复杂数据类型的使用方式。
18 2
|
5月前
|
Java
自定义的数据类型
自定义的数据类型
52 0
|
5月前
|
存储 人工智能 程序员
溢出、截断、类型提升:从易错代码入手分析整型数据存储与类型转换
这篇文章介绍了关于数据在内存中的存储以及可能出现的溢出问题,包括整型数据的存储方式、取值范围以及溢出的现象和原因。文章通过例子和罗盘图解释了整型数据溢出时的计算过程,并指出在进行运算时要注意数据类型的转换和可能的溢出情况。此外,文章还给出了几个练习题,帮助读者理解和应用这些知识。
152 0
|
5月前
|
JavaScript 安全
TypeScript 中的高级类型转换技术:映射类型、条件类型和类型推断
TypeScript 中的高级类型转换技术:映射类型、条件类型和类型推断
|
5月前
数据类型容易忽略的细节
数据类型容易忽略的细节
57 0
|
10月前
|
存储 编译器 C#
C# 变量数据类型的使用和案例(基础篇)
C# 变量数据类型的使用和案例(基础篇)