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

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

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

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

.NET 程序集高級技術(shù)與動態(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ù)在方法簽名中的位置

二、動態(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
命名空間導(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)識符屬性 MemberAttributes
對類型的引用 CodeTypeReference
對類型的引用集合 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
將對象或表達(dá)式強(qiáng)制轉(zhuǎn)換為數(shù)據(jù)類型的表達(dá)式 CodeCastExpression
基元值表達(dá)式 CodePrimitiveExpression
typeof 表達(dá)式 CodeTypeOfExpression
數(shù)組索引器 CodeArrayIndexerExpression
對參數(shù)的引用 CodeArgumentReferenceExpression
對變量的引用 CodeVariableReferenceExpression
引用類型的表達(dá)式 CodeTypeReferenceExpression
屬性集的值參數(shù)表達(dá)式 CodePropertySetValueReferenceExpression
創(chuàng)建對象的表達(dá)式 CodeObjectCreateExpression
創(chuàng)建數(shù)組的表達(dá)式 CodeArrayCreateExpression
調(diào)用方法的表達(dá)式 CodeMethodInvokeExpression
類型索引器 CodeIndexerExpression
對基類的引用 CodeBaseReferenceExpression
對字段的引用 CodeFieldReferenceExpression
對方法的引用 CodeMethodReferenceExpression
對屬性的引用 CodePropertyReferenceExpression
對事件的引用 CodeEventReferenceExpression
對當(dāng)前對象的引用 CodeThisReferenceExpression
可編譯的文件代碼單元 CodeSnippetCompileUnit
類成員的文本元素 CodeSnippetTypeMember
表達(dá)式的文本代碼元素 CodeSnippetExpression
CodeDOM 對象的抽象基類 CodeObject
表示包含文件名和行號的位置 CodeLinePragma

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 延边| 惠东县| 乐清市| 仙居县| 罗江县| 西充县| 龙泉市| 鄯善县| 青海省| 靖江市| 颍上县| 博客| 呈贡县| 白山市| 宜黄县| 镇远县| 新巴尔虎左旗| 奎屯市| 报价| 宣武区| 南溪县| 恩施市| 桂东县| 兴义市| 穆棱市| 米脂县| 邵武市| 洮南市| 枣庄市| 乐都县| 嘉义市| 宁德市| 横峰县| 利川市| 邓州市| 上饶市| 沿河| 介休市| 白朗县| 武汉市| 库伦旗|