国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#實現利用反射簡化給類字段賦值的方法

2020-01-24 01:52:13
字體:
來源:轉載
供稿:網友

本文實例講述了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,/r/n" +   "A.FDB,A.FAllow,A.FDisallow,A.FSB,A.FBig,A.FSmall,A.FInputMethod," +    "A.FCHK,A.FRelation,A.FDesc,A.FSecond,/r/n" +   "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 /r/n" +   "INNER JOIN P_Field_Initial B ON A.FNo=B.FNo /r/n" +   "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,/r/n" +    "A.FDB,A.FAllow,A.FDisallow,A.FSB,A.FBig,A.FSmall,"+    "A.FInputMethod,A.FCHK,A.FRelation,A.FDesc,A.FSecond,/r/n" +    "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 /r/n" +    "INNER JOIN P_Field_Initial B ON A.FNo=B.FNo /r/n" +    "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#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 滨海县| 山东省| 沅江市| 沾化县| 麻城市| 巍山| 内丘县| 特克斯县| 玉山县| 渝中区| 垫江县| 香河县| 灵石县| 西充县| 利津县| 海口市| 碌曲县| 淅川县| 武鸣县| 雷州市| 东港市| 黄骅市| 郴州市| 绥化市| 博野县| 东明县| 综艺| 绥棱县| 盖州市| 勃利县| 阳城县| 阜新| 永清县| 固原市| 瑞丽市| 夹江县| 望江县| 兴文县| 海晏县| 类乌齐县| 朝阳县|