麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

.NET 程序集高級(jí)技術(shù)與動(dòng)態(tài)產(chǎn)生和編譯源代碼

2019-11-14 12:48:08
字體:
供稿:網(wǎng)友

.NET 程序集高級(jí)技術(shù)與動(dòng)態(tài)產(chǎn)生和編譯源代碼

一、反射

1、反射的作用  a、使用 Assembly 定義和加載程序集,加載在程序集清單中列出的模塊  b、使用 Module 了解模塊的程序集以及模塊中的類的信息  c、使用 ConstructorInfo 了解類的構(gòu)造函數(shù)的名稱、參數(shù)、訪問修飾符和實(shí)現(xiàn)的詳細(xì)信息  d、使用 MethodInfo 了解方法的名稱、返回類型、參數(shù)、訪問修飾符和實(shí)現(xiàn)詳細(xì)詳細(xì)(abstract或virtual)  e、使用 FieldInfo 了解方法的名稱、訪問修飾符和實(shí)現(xiàn)詳細(xì)信息  f、使用 EventInfo 來了解事件的名稱、事件處理程序數(shù)據(jù)類型、自定義屬性、聲明類型和反射類型  g、使用 PRopertyInfo 來了解屬性的名稱、數(shù)據(jù)類型、聲明類型、反射類型和只讀或可寫狀態(tài)  h、使用 ParameterInfo 來了解參數(shù)的名稱、數(shù)據(jù)類型、參數(shù)是輸入?yún)?shù)還是輸出參數(shù),以及參數(shù)在方法簽名中的位置

二、動(dòng)態(tài)創(chuàng)建程序集

1、通過 AppDomain 對(duì)象的DefineDynamicAssembly 方法創(chuàng)建一個(gè)程序集框架

AppDomain domain = AppDomain.CurrentDomain;AssemblyName assemblyName = new AssemblyName();assemblyName.Name = "DynamicAssembly";AssemblyBuilder newAssembly = domain.DefineDynamicAssembly(assemblyName,AssemblyBuilderaccess.Run);ModuleBuilder newModule = newAssembly.DefineDynamicModule("SayHello");TypeBuilder classType = newModule.DefineType("MySayHello",TypeAttributes.Public);classType.IsClass = true;classType.AddInterfaceImplementation(typeof(ISayHello));Type[] paramTypes = new Type[0];Type returnType = typeof(int);MethodBuilder simpleMethod = classType.DefineMethod("SayHello",MethodAttributes.Public | MethodAttributes.Virtual,returnType,paramTypes);ILGenerator generator = simpleMethod.GetILGenerator();

2、為方法添加代碼

generator.Emit(OpCodes.Ldc_I4,1);//利用 Emit 方法直接寫偽代碼,將 1 壓入堆棧generator.Emit(OpCodes.Ret);//返回棧頂元素generator.EmitWriteLine("Hello");//IL 寫入方法 DeclareLocal、DefineLabel、EmitWriteLine

3、將類型寫入程序集

classType.CreateType();

三、代碼文檔對(duì)象模型 CodeDOM

源代碼元素的類型 代表性 CodeDOM 元素
源代碼文檔或代碼段 CodeCompileUnit
命名空間聲明 CodeNamespace
命名空間聲明集合 CodeNamespaceCollection
命名空間導(dǎo)入 CodeNamespaceImport
命名空間導(dǎo)入集合 CodeNamespaceImportCollection
類、結(jié)構(gòu)或枚舉的類型聲明 CodeTypeDeclaration
類型聲明集合 CodeTypeDeclarationCollection
類型成員的抽象基類 CodeTypeMember
類型成員集合 CodeMemberMethod
類字段聲明 CodeMemberField
類屬性聲明 CodeMemberProperty
類型的構(gòu)造函數(shù) CodeConstructor
類型的靜態(tài)構(gòu)造函數(shù) CodeTypeConstructor
程序入口點(diǎn) CodeEntryPoint
CodeTypeMember 使用的標(biāo)識(shí)符屬性 MemberAttributes
對(duì)類型的引用 CodeTypeReference
對(duì)類型的引用集合 CodeTypeReferenceCollection
自定義屬性聲明 CodeAttributeDeclaration
自定義屬性聲明集合 CodeAttributeDeclarationCollection
參數(shù)聲明 CodeParameterDeclarationExpression
參數(shù)聲明集合 CodeParameterDeclarationExpressionCollection
自定義屬性的參數(shù) CodeAttributeArgument
自定義屬性的參數(shù)集合 CodeAttributeArgumentCollection
方向表達(dá)式 CodeDirectionExpression
參數(shù)的方向 FieldDirection
語句的抽象基類 CodeStatement
代碼語句集合 CodeStatementCollection
代碼語句的代碼表達(dá)式 CodeExpressionStatement
變量聲明語句 CodeVariableDeclarationStatement
賦值語句 CodeAssignStatement
二元運(yùn)算符表達(dá)式 CodeBinaryOperatorExpression
二元運(yùn)算符的類型 CodeBinaryOperatorType
注釋 CodeStatement
注釋語句 CodeCommentStatement
注釋語句集合 CodeCommentStatementCollection
類事件聲明 CodeMemberEvent
委托聲明 CodeTypeDelegate
創(chuàng)建委托的表達(dá)式 CodeDelegateCreateExpression
調(diào)用委托的表達(dá)式 CodeDelegateInvokeExpression
為事件附加委托的語句 CodeAttachEventStatement
throw 異常語句 CodeThrowExceptionStatement
try…catch…finally 代碼塊 CodeTryCatchFinallyStatement
catch 語句 CodeCatchClause
catch 語句塊 CodeCatchClauseCollection
if 語句 CodeConditionStatement
for 循環(huán)語句 CodeIterationStatement
goto 語句 CodeGotoStatement
返回值語句 CodeMethodReturnStatement
標(biāo)記語句 CodeLabeledStatement
表達(dá)式的抽象基類 CodeExpression
代碼表達(dá)式集合 CodeExpressionCollection
將對(duì)象或表達(dá)式強(qiáng)制轉(zhuǎn)換為數(shù)據(jù)類型的表達(dá)式 CodeCastExpression
基元值表達(dá)式 CodePrimitiveExpression
typeof 表達(dá)式 CodeTypeOfExpression
數(shù)組索引器 CodeArrayIndexerExpression
對(duì)參數(shù)的引用 CodeArgumentReferenceExpression
對(duì)變量的引用 CodeVariableReferenceExpression
引用類型的表達(dá)式 CodeTypeReferenceExpression
屬性集的值參數(shù)表達(dá)式 CodePropertySetValueReferenceExpression
創(chuàng)建對(duì)象的表達(dá)式 CodeObjectCreateExpression
創(chuàng)建數(shù)組的表達(dá)式 CodeArrayCreateExpression
調(diào)用方法的表達(dá)式 CodeMethodInvokeExpression
類型索引器 CodeIndexerExpression
對(duì)基類的引用 CodeBaseReferenceExpression
對(duì)字段的引用 CodeFieldReferenceExpression
對(duì)方法的引用 CodeMethodReferenceExpression
對(duì)屬性的引用 CodePropertyReferenceExpression
對(duì)事件的引用 CodeEventReferenceExpression
對(duì)當(dāng)前對(duì)象的引用 CodeThisReferenceExpression
可編譯的文件代碼單元 CodeSnippetCompileUnit
類成員的文本元素 CodeSnippetTypeMember
表達(dá)式的文本代碼元素 CodeSnippetExpression
CodeDOM 對(duì)象的抽象基類 CodeObject
表示包含文件名和行號(hào)的位置 CodeLinePragma

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 新久久久久久 | 久草在线资源观看 | 在线观看免费视频麻豆 | 亚洲成人高清电影 | 欧美成人免费小视频 | 国产一级aaa全黄毛片 | 日韩欧美激情视频 | 涩涩天堂 | 精品中文字幕久久久久四十五十骆 | 久久成人精品视频 | 欧美成人精品欧美一级 | 国产一区二区三区在线免费 | 欧美激情第一区 | 精品一区二区久久久久久久网精 | 黄色网电影 | 久久一区国产 | 黄网免费看 | 99成人在线| 国产精品99精品 | 免费男女乱淫真视频 | 免费黄色在线观看网站 | 日韩精品一二三区 | 午夜色片| 欧美日韩高清一区二区三区 | 成人爽a毛片免费啪啪红桃视频 | 91精品国产综合久久久欧美 | 欧美日韩色 | 亚洲网站免费观看 | 日韩一级视频 | 日韩精品中文字幕在线观看 | 97青青草视频 | 中文字幕在线日韩 | 国产一区视频观看 | 99精品视频在线免费观看 | 欧美一级毛片免费观看视频 | 成人午夜视频在线观看 | 日本网站在线播放 | 精品国产一区二区在线观看 | 国产乱xxxx | 超污视频在线看 | 欧美视屏一区二区 |