CodeDom生成類檔案

2022-02-22 05:33:25 字數 3034 閱讀 4444

僅供個人學習

需要先引入system.codedom nuget包

1

using

codegenerate.entities;

2using

system;

3using

system.codedom;

4using

system.codedom.compiler;

5using

system.collections.generic;

6using

system.reflection;

7using

system.text;89

namespace

codegenerate

1060

61//

生成**

62 codedomprovider provider = codedomprovider.createprovider("

csharp");

63 codegeneratoroptions options = new

codegeneratoroptions();

64 options.bracingstyle = "c"

;65 options.blanklinesbetweenmembers = true;66

using (system.io.streamwriter sw = new

system.io.streamwriter(outputfile))

6770}71

72public

static

void propertiesgenerate(string namespacename, string classname, typeattributes classtype, string filename, listclassinfos)

73115

116//

生成**

117 codedomprovider provider = codedomprovider.createprovider("

csharp");

118 codegeneratoroptions options = new

codegeneratoroptions();

119 options.bracingstyle = "c"

;120 options.blanklinesbetweenmembers = true

;121

using (system.io.streamwriter sw = new

system.io.streamwriter(outputfile))

122125

}126

}127 }

static

void generate(dictionarydic)

//新增屬性

codememberproperty property = new

codememberproperty();

property.attributes = memberattributes.public |memberattributes.final;

property.name = "id"

; property.hasget = true

; property.hasset = true

; property.type = new codetypereference(typeof

(system.string));

property.comments.add(

new codecommentstatement("

這是id屬性

"));

codemethodreturnstatement(new codefieldreferenceexpression(new codethisreferenceexpression(), "_id1")));

codeassignstatement(new codefieldreferenceexpression(new codethisreferenceexpression(), "_id2"), new codepropertysetvaluereferenceexpression()));

customerclass.members.add(property);

//新增方法(使用codemembermethod)--此處略

//新增構造器(使用codeconstructor) --此處略

//新增程式入口點(使用codeentrypointmethod) --此處略

//新增事件(使用codememberevent) --此處略

//新增特徵(使用 codeattributedeclaration)

customerclass.customattributes.add(new codeattributedeclaration(new codetypereference(typeof

(serializableattribute))));

//生成**

codedomprovider provider = codedomprovider.createprovider("

csharp");

codegeneratoroptions options = new

codegeneratoroptions();

options.bracingstyle = "c"

; options.blanklinesbetweenmembers = true

;

using (system.io.streamwriter sw = new

system.io.streamwriter(outputfile))

}

參考文章:

使用CodeDom生成程式集

using system using microsoft.csharp using system.codedom.compiler using system.codedom namespace test.cui codesnippetcompileunit cu new codesnippetcom...

動態生成CS檔案(動態生成C 類)

1.codetypedeclaration 可用於表示宣告類 結構 介面或列舉的 官方傳送門 2.codememberfield 表示某種型別的字段的宣告 官方傳送門 3.codedomprovider 可用於建立和檢索 生成器和 編譯器的例項。生成器可用於以特定的語言生成 而 編譯器可用於將 編譯...

PHP使用tcpdf類生成PDF檔案

使用pctdf生成的pdf檔案 require once tcpdf tcpdf.php 例項化 content 我是乙個pdf 你要生成的pdf內容 pdf new tcpdf p mm a4 true,utf 8 false 設定文件資訊 pdf setcreator lane pdf seta...