您的位置:首页 > 其它

动态数据类型转换

2014-06-05 00:00 183 查看
这是我的工具包里的一部分代码

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





代码

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();
&nb
3ff0
sp; }

///

<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
;

3ff0
}
}
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

{
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: