中国a级毛片免费观看,啦啦啦资源视频在线完整免费高清,真人性囗交69视频,日本毛X片免费视频观看视频

rexian

咨詢電話:023-6276-4481

熱門文章

聯(lián)系方式

電 話:023-6276-4481

郵箱:broiling@qq.com

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

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

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

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

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

一、反射

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
類、結(jié)構或枚舉的類型聲明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
調(diào)用委托的表達式CodeDelegateInvokeExpression
為事件附加委托的語句CodeAttachEventStatement
throw 異常語句CodeThrowExceptionStatement
try…catch…finally 代碼塊CodeTryCatchFinallyStatement
catch 語句CodeCatchClause
catch 語句塊CodeCatchClauseCollection
if 語句CodeConditionStatement
for 循環(huán)語句CodeIterationStatement
goto 語句CodeGotoStatement
返回值語句CodeMethodReturnStatement
標記語句CodeLabeledStatement
表達式的抽象基類CodeExpression
代碼表達式集合CodeExpressionCollection
將對象或表達式強制轉(zhuǎn)換為數(shù)據(jù)類型的表達式CodeCastExpression
基元值表達式CodePrimitiveExpression
typeof 表達式CodeTypeOfExpression
數(shù)組索引器CodeArrayIndexerExpression
對參數(shù)的引用CodeArgumentReferenceExpression
對變量的引用CodeVariableReferenceExpression
引用類型的表達式CodeTypeReferenceExpression
屬性集的值參數(shù)表達式CodePropertySetValueReferenceExpression
創(chuàng)建對象的表達式CodeObjectCreateExpression
創(chuàng)建數(shù)組的表達式CodeArrayCreateExpression
調(diào)用方法的表達式CodeMethodInvokeExpression
類型索引器CodeIndexerExpression
對基類的引用CodeBaseReferenceExpression
對字段的引用CodeFieldReferenceExpression
對方法的引用CodeMethodReferenceExpression
對屬性的引用CodePropertyReferenceExpression
對事件的引用CodeEventReferenceExpression
對當前對象的引用CodeThisReferenceExpression
可編譯的文件代碼單元CodeSnippetCompileUnit
類成員的文本元素CodeSnippetTypeMember
表達式的文本代碼元素CodeSnippetExpression
CodeDOM 對象的抽象基類CodeObject
表示包含文件名和行號的位置CodeLinePragma