C 類兩種動態新增屬性並賦值的解決方法

2022-03-02 14:33:04 字數 1605 閱讀 9257

搜尋網上資料並根據專案中的需要最終整理出來分享給大家,希望對大家有所幫助

功能:將datatable 中的colums名稱作為屬性動態新增到類中,將datatable中的第一行資料給屬性賦值

1.第一種方法 使用dynamic  支援.net4.0以上版本支援

///

///使用dynamic根據datatable的列名自動新增屬性並賦值

//////

///

public

static

object getdynamicclassbydt(datatable dt)

return

d;}

view code

2.第二種方法 使用反射(此方法比方法一的效能低,是通過動態生成類、並動態生成類的屬性)

///

///使用反射 動態建立類,將datatable的列名動態新增為該類的屬性,並給屬性賦值

///該方法由於要動態建立類,效能比較低(注意只是將datatable的第一行轉換為動態實體類)

//////

///public

static

object creatnewclassbydt(datatable dt)

//建立編譯器例項。

csharpcodeprovider provider = new

csharpcodeprovider();

//設定編譯引數。

compilerparameters paras = new

compilerparameters();

paras.generateexecutable = false

; paras.generateinmemory = true

;

//建立動態**。

stringbuilder classsource = new

stringbuilder();

"public class dynamicclass \n");

""}"

); system.diagnostics.debug.writeline(classsource.tostring());

//編譯**。

compilerresults result =provider.compileassemblyfromsource(paras, classsource.tostring());

//獲取編譯後的程式集。

assembly assembly =result.compiledassembly;

object obclass = assembly.createinstance("

dynamicclass");

foreach (datacolumn cl in

dt.columns)

}return

obclass;

}

view code

如果,您認為閱讀這篇部落格讓您有些收穫,不妨點選一下右下角的【推薦】按鈕。

如果,您希望更容易地發現我的新部落格,不妨點選一下右下角的【關注 凌雲】。

因為,我的寫作熱情也離不開您的肯定支援。

訪問類中私有屬性的方式(兩種)

1.首先要理解私有屬性 私有屬性主要是指 python中單下劃線和雙下劃線的區別 比較直白的意思是 x 單前置下劃線,私有化屬性或方法,from somemoudle import 禁止匯入,類物件和子類可以訪問 xx 雙前置下劃線,避免與子類中的屬性命名衝突,無法在外部直接訪問 名字重整所以訪問不...

Python之關於類變數的兩種賦值區別詳解

我就廢話不多說了,還是直接看 吧!coding utf 8 面試題,寫乙個方法,將一行字串中所有的單詞數量統計出來 class person object tag hello p1 person p2 person print p1.tag 第一種賦值方式 print p2.tag print pe...

C 類的兩種例項化方法

直接上 include include include using namespace std class student student student int age,string name void student show int age,string name void student s...