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

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

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

2019-11-14 11:50:57
字體:
供稿:網(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ā)表
主站蜘蛛池模板: 精品亚洲va在线va天堂资源站 | 国产亚洲精品久久久久久网站 | 婷婷久久久久久 | 免费黄色a | 欧美18videos性处按摩 | 国产小视频一区 | 国产精品中文在线 | 黄网站免费观看视频 | 999精品国产 | 黄色影院网站 | 九九热国产在线 | 亚洲一级簧片 | av电影网在线观看 | 深夜视频福利 | 一级做a在线观看 | 日本不卡一区二区三区在线观看 | 男女羞羞视频在线免费观看 | 成年免费网站 | 女人裸体让男人桶全过程 | 欧美黄色片免费看 | 黄色网址在线视频 | 中文在线观看视频 | av在线免费看网址 | 亚洲αv | 国产精品欧美久久久久一区二区 | gril hd| 午夜精品久久久久久久99热浪潮 | 国产精品成人一区二区三区吃奶 | 欧美成人午夜影院 | 在线观看免费av网 | 黑人三级毛片 | 久久久在线免费观看 | 久久精品首页 | 亚洲精品成人久久 | 深夜福利视频免费观看 | 羞羞视频在线免费 | 神马久久蜜桃 | 草久在线观看视频 | 中文字幕欧美视频 | h视频免费观看 | 亚洲精品午夜国产va久久成人 |