永久免费看黄A片无码软件,japanese 在线观看国产,强奷高H猛烈失禁潮喷播放,亚洲成精品自拍

rexian

咨詢電話:023-6276-4481

熱門(mén)文章

聯(lián)系方式

電 話:023-6276-4481

郵箱:broiling@qq.com

地址:重慶市南岸區(qū)亞太商谷6幢25-2

當(dāng)前位置:網(wǎng)站首頁(yè) > 技術(shù)文章 > .NET 程序集高級(jí)技術(shù)與動(dòng)態(tài)產(chǎn)生和編譯源代碼

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

編輯:T.T 發(fā)表時(shí)間:2017-11-20 12:28:42
T.T

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

一、反射

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

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

1、通過(guò) 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 方法直接寫(xiě)偽代碼,將 1 壓入堆棧 generator.Emit(OpCodes.Ret);//返回棧頂元素 generator.EmitWriteLine("Hello");//IL 寫(xiě)入方法 DeclareLocal、DefineLabel、EmitWriteLine

3、將類型寫(xiě)入程序集

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
語(yǔ)句的抽象基類CodeStatement
代碼語(yǔ)句集合CodeStatementCollection
代碼語(yǔ)句的代碼表達(dá)式CodeExpressionStatement
變量聲明語(yǔ)句CodeVariableDeclarationStatement
賦值語(yǔ)句CodeAssignStatement
二元運(yùn)算符表達(dá)式CodeBinaryOperatorExpression
二元運(yùn)算符的類型CodeBinaryOperatorType
注釋CodeStatement
注釋語(yǔ)句CodeCommentStatement
注釋語(yǔ)句集合CodeCommentStatementCollection
類事件聲明CodeMemberEvent
委托聲明CodeTypeDelegate
創(chuàng)建委托的表達(dá)式CodeDelegateCreateExpression
調(diào)用委托的表達(dá)式CodeDelegateInvokeExpression
為事件附加委托的語(yǔ)句CodeAttachEventStatement
throw 異常語(yǔ)句CodeThrowExceptionStatement
try…catch…finally 代碼塊CodeTryCatchFinallyStatement
catch 語(yǔ)句CodeCatchClause
catch 語(yǔ)句塊CodeCatchClauseCollection
if 語(yǔ)句CodeConditionStatement
for 循環(huán)語(yǔ)句CodeIterationStatement
goto 語(yǔ)句CodeGotoStatement
返回值語(yǔ)句CodeMethodReturnStatement
標(biāo)記語(yǔ)句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