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

首頁 > 學院 > 開發(fā)設計 > 正文

.NET 程序集高級技術與動態(tài)產生和編譯源代碼

2019-11-14 11:53:29
字體:
來源:轉載
供稿:網(wǎng)友

.NET 程序集高級技術與動態(tài)產生和編譯源代碼

一、反射

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

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

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

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();

三、代碼文檔對象模型 CodeDOM

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 成年人在线视频免费 | 国产资源在线免费观看 | 亚洲影院在线 | 国产精品成人av片免费看最爱 | 国产影院一区 | 欧美a∨亚洲欧美亚洲 | 欧美成人一区二区三区电影 | 色妞视频男女视频 | 精品国产乱码久久久久久丨区2区 | 免费毛片小视频 | 久久不射电影网 | 国产精品啪一品二区三区粉嫩 | 欧美成人精品一区二区三区 | 在线播放亚洲视频 | 欧美18一12sex性处hd | 欧美成人精品一级 | 欧美综合在线观看 | 国产日韩欧美一区 | 成人在线视频免费看 | 在线免费观看日韩视频 | 精品小视频 | 成人免费乱码大片a毛片视频网站 | 欧美一级爱操视频 | 黄色网址免费进入 | 男女羞羞视频在线免费观看 | 欧美久久一区二区 | 成人在线观看网 | av不卡免费在线 | 色99久久| 国产69精品久久久久孕妇黑 | 久久久久久久久久久久久久av | 精品国产99久久久久久宅男i | 精品一区二区三区日本 | 欧美一极视频 | 久久草在线视频国产 | 久久久aa| 国产精品免费一区二区三区四区 | 国产精品成人一区二区三区电影毛片 | 一级黄色片在线看 | 国产91在线高潮白浆在线观看 | 午夜视频色 |