手机
当前位置:查字典教程网 >编程开发 >C#教程 >C#实现利用反射简化给类字段赋值的方法
C#实现利用反射简化给类字段赋值的方法
摘要:本文实例讲述了C#实现利用反射简化给类字段赋值的方法。分享给大家供大家参考。具体分析如下:说明:这个例子主要的思路是建立一个类和数据库查询语...

本文实例讲述了C#实现利用反射简化给类字段赋值的方法。分享给大家供大家参考。具体分析如下:

说明:这个例子主要的思路是建立一个类和数据库查询语句的字段结构是一致的

然后利用反射,直接用数据字段名称进行拼凑,给类对象的字段进行赋值

1.类的定义

namespace CCB_Donet.ClassFolder { public class FieldRuleInfo { public string gStrFNo; public string gStrFName; public string gStrFLock; public string gStrFCaption; public string gStrFType; public string gStrFMust; public string gStrFMin; public string gStrFMax; public string gStrFDefault; public string gStrFDate; public string gStrFDB; public string gStrFAllow; public string gStrFDisallow; public string gStrFSB; public string gStrFBig; public string gStrFSmall; public string gStrFInputMethod; public string gStrFCHK; public string gStrFRelation; public string gStrFDesc; public string gStrFSecond; public string gStrFQC; public string gStrFException; public string gStrFASupp; public string gStrFYQH; public string gStrFPos; public string gStrFStar; public string gStrFSave; public string gStrFAddress; public string gStrFLblColor; public string gStrFIsCheckList; } } #region 加载字段规则 private bool m_GetRule() { string strSQL = ""; DataTable dtGet = null; #if(DEBUG) try { #endif if (Common.gIntTypeOrder == 95) { strSQL = "select A.FNo,A.FName,A.FLock,A.FCaption,A.FType," + "A.FMust,A.FMin,A.FMax,A.FDefault,A.FDate,rn" + "A.FDB,A.FAllow,A.FDisallow,A.FSB,A.FBig,A.FSmall,A.FInputMethod," + "A.FCHK,A.FRelation,A.FDesc,A.FSecond,rn" + "A.FQC,A.FException,A.FASupp,A.FYQH,A.FPos,A.FStar,A.FSave,"+ "A.FAddress,A.FLblColor,A.FIsCheckList from P_Field_Rule95 A rn" + "INNER JOIN P_Field_Initial B ON A.FNo=B.FNo rn" + "where A.FormType=1 AND B.FSection='1' AND " + "(B.FRegion95=1 OR B.FRegion95=-1) ORDER BY A.FOrder"; } else { strSQL = "select A.FNo,A.FName,A.FLock,A.FCaption,A.FType,"+ "A.FMust,A.FMin,A.FMax,A.FDefault,A.FDate,rn" + "A.FDB,A.FAllow,A.FDisallow,A.FSB,A.FBig,A.FSmall,"+ "A.FInputMethod,A.FCHK,A.FRelation,A.FDesc,A.FSecond,rn" + "A.FQC,A.FException,A.FASupp,A.FYQH,A.FPos,A.FStar,"+ "A.FSave,A.FAddress,A.FLblColor,A.FIsCheckList "+ "from P_Field_Rule A rn" + "INNER JOIN P_Field_Initial B ON A.FNo=B.FNo rn" + "where A.FormType=" + Common.gIntFormType.ToString() + " AND B.FSection='1' AND (B.FRegion=" + Common.gIntRegion.ToString() + " OR B.FRegion=-1) ORDER BY A.FOrder"; } dtGet = DB.GetDataTableBySQL(strSQL); if (dtGet.Rows.Count <= 0) { Common.ShowMessage("字段规则表没有数据,请马上联系软件工程师!", MessageBoxIcon.Error); return false; } //获得类信息,为下面的反射调用做准备 Type oType = Type.GetType("CCB_Donet.ClassFolder.FieldRuleInfo"); //生成类对象数组,和数据库记录个数是一致的 mMainFieldRule = new FieldRuleInfo[dtGet.Rows.Count]; for (int i = 0; i < dtGet.Rows.Count; i++) { //这里使用反射动态为FieldRuleInfo字段赋值数据 mMainFieldRule[i] = new FieldRuleInfo(); for (int j = 0; j < dtGet.Columns.Count; j++) { //这里直接获取类的字段名称,然后把数据库里对应字段的值赋值给它 FieldInfo fieldInfo = oType.GetField("gStr" + dtGet.Columns[j].ColumnName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static); fieldInfo.SetValue(mMainFieldRule[i], dtGet.Rows[i][j].ToString()); } } return true; #if(DEBUG) } catch (Exception ex) { return false; MyLog.WriteErrLog("frmDE-m_GetRule", ex.Message); } finally { dtGet = null; } #endif } #endregion

希望本文所述对大家的C#程序设计有所帮助。

【C#实现利用反射简化给类字段赋值的方法】相关文章:

C#中使用反射获取结构体实例及思路

.net后台获取html控件值的2种方法

C#几种截取字符串的方法小结

C#获取系统版本信息方法

C#编程实现Excel文档中搜索文本内容的方法及思路

重写、隐藏基类(new, override)的方法

C#三种判断数据库中取出的字段值是否为空(NULL) 的方法

使用C#获取系统特殊文件夹路径的解决方法

c# 重载WndProc,实现重写“最小化”的实现方法

C# 去除首尾字符或字符串的方法

精品推荐
分类导航