精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

談談程序集加載和反射機制

開發(fā) 后端
最近一直都在看關于程序集加載和反射方面的資料, 所以在這里把我所學習到的東西記錄下來,方便自己以后復習,也給不懂的朋友參考。

一、程序集的加載

JIT編譯器器將IL代碼編譯成本地代碼時, 會查看IL代碼中引用了哪些類型。在運行過程中,JIT編譯器利用程序集的TypeRef和AssemblyRef元數(shù)據(jù)表來確定哪一個程序集定義了所引用的類型,然后JIT編譯器將對應程序集加載到AppDomain中,在內(nèi)部,CLR使用System.Reflection.Assembly類的靜態(tài)方法Load來嘗試加載一個程序集。然而如果我們想動態(tài)加載一個程序集時,可以使用Assembly的Load方法來動態(tài)加載程序集,其中Assembly類中還提供了其他的加載程序集方法,有LoadFrom(string path), LoadFile(stringassemblyFile)等,具體方法的使用和解釋可以參照MSDN中的介紹:http://msdn.microsoft.com/zh-cn/library/xbe1wdx9

二、反射機制

.net中反射在運行中過程中解析程序集中的元數(shù)據(jù),獲得類型中的成員(包括字段、構造器、方法、屬性、事件等)信息。

動態(tài)加載一個程序集并獲得類型中的成員

把下面的類放在一個類庫工程中,并編譯生成程序集(例如為ClassLibrary1.dll,假設把dll放在D盤根目錄下面)

  1. public class ReflectTestClass 
  2.    { 
  3.       public  string name; 
  4.       public int age; 
  5.       public string Name 
  6.       { 
  7.           get { return name; } 
  8.           set { name = value; } 
  9.       } 
  10.  
  11.       public int Age 
  12.       { 
  13.           get { return age; } 
  14.           set { age = value; } 
  15.       } 
  16.  
  17.        /// <summary> 
  18.        /// No Paramter Constructor 
  19.        /// </summary> 
  20.       public ReflectTestClass() 
  21.       {  
  22.       } 
  23.  
  24.        /// <summary> 
  25.        /// Constructor with Parameter 
  26.        /// </summary> 
  27.        /// <param name="name"></param> 
  28.        /// <param name="age"></param> 
  29.        public ReflectTestClass(string names,int ages) 
  30.        { 
  31.            this.name = names; 
  32.            this.age = ages; 
  33.        } 
  34.  
  35.        public string writeString(string name) 
  36.        { 
  37.            return "Welcome " + name; 
  38.        } 
  39.  
  40.        public static string WriteName(string name) 
  41.        { 
  42.            return "Welcome "+name +" Come here"
  43.        } 
  44.  
  45.        public string WirteNopara() 
  46.        { 
  47.            return "The method is no parameter "
  48.        } 
  49.    } 

然后建立一個控制臺程序用來動態(tài)加載上面生成的程序集和輸出類型中的成員,代碼中有詳細的介紹。

  1. class Program 
  2.     { 
  3.         static void Main(string[] args) 
  4.         { 
  5.             Assembly ass; 
  6.             Type[] types; 
  7.             Type typeA; 
  8.             object obj; 
  9.             try 
  10.             { 
  11.                 // 從本地中 加載程序集 然后從程序集中通過反射獲得類型的信息的,并且調用方法 
  12.                 ass = Assembly.LoadFrom(@"D:\ClassLibrary1.dll"); 
  13.                 types = ass.GetTypes(); 
  14.                 foreach (Type type in types) 
  15.                 { 
  16.                     Console.WriteLine("Class Name is " + type.FullName); 
  17.                     Console.WriteLine("Constructor Information"); 
  18.                     Console.WriteLine("-----------------------"); 
  19.                     // 獲取類型的結構信息 
  20.                     ConstructorInfo[] myconstructors = type.GetConstructors(); 
  21.                     ShowMessage<ConstructorInfo>(myconstructors); 
  22.  
  23.                     Console.WriteLine("Fields Information"); 
  24.                     Console.WriteLine("-----------------------"); 
  25.                     // 獲取類型的字段信息 
  26.                     FieldInfo[] myfields = type.GetFields(); 
  27.                     ShowMessage<FieldInfo>(myfields); 
  28.  
  29.                     Console.WriteLine("All Methods Information"); 
  30.                     Console.WriteLine("-----------------------"); 
  31.                     // 獲取方法信息 
  32.                     MethodInfo[] myMethodInfo = type.GetMethods(); 
  33.                     ShowMessage<MethodInfo>(myMethodInfo); 
  34.  
  35.                     Console.WriteLine("All Properties Information"); 
  36.                     Console.WriteLine("-----------------------"); 
  37.                     // 獲取屬性信息 
  38.                     PropertyInfo[] myproperties = type.GetProperties(); 
  39.                     ShowMessage<PropertyInfo>(myproperties); 
  40.                 } 
  41.  
  42.                 // 用命名空間+類名獲取類型 
  43.                 typeA = ass.GetType("ClassLibrary1.ReflectTestClass"); 
  44.                  
  45.                 // 獲得方法名稱 
  46.  
  47.                 MethodInfo method = typeA.GetMethod("writeString"); 
  48.  
  49.                 // 創(chuàng)建實例 
  50.                 obj = ass.CreateInstance("ClassLibrary1.ReflectTestClass"); 
  51.  
  52.                 string result = (String)method.Invoke(obj,new string[] {"Tom"}); 
  53.                 Console.WriteLine("Invoke Method With Parameter"); 
  54.                 Console.WriteLine("-----------------------"); 
  55.                 Console.WriteLine(result); 
  56.                 Console.WriteLine("-----------------------"); 
  57.                 Console.WriteLine(); 
  58.                 method = typeA.GetMethod("WriteName"); 
  59.                 result = (string)method.Invoke(null,new string[] {"Tom"}); 
  60.                 Console.WriteLine("Invoke Static Method with Parameter"); 
  61.                 Console.WriteLine("-----------------------"); 
  62.                 Console.WriteLine(result); 
  63.                 Console.WriteLine("-----------------------"); 
  64.                 Console.WriteLine(); 
  65.                 method = typeA.GetMethod("WirteNopara"); 
  66.                 Console.WriteLine("Invoke Method with NOParameter"); 
  67.                 result = (string)method.Invoke(obj, null); 
  68.                 Console.WriteLine("-----------------------"); 
  69.                 Console.WriteLine(result); 
  70.                 Console.WriteLine("-----------------------"); 
  71.             } 
  72.  
  73.             catch(FileNotFoundException ex) 
  74.             { 
  75.                 Console.WriteLine(ex.Message); 
  76.             } 
  77.  
  78.             Console.ReadLine(); 
  79.         } 
  80.  
  81.         /// <summary> 
  82.         /// 顯示數(shù)組信息 
  83.         /// </summary> 
  84.         /// <typeparam name="T"></typeparam> 
  85.         /// <param name="os"></param> 
  86.         public static void ShowMessage<T>(T[] array) 
  87.         {  
  88.             foreach(T member in array) 
  89.             { 
  90.                 Console.WriteLine(member.ToString()); 
  91.             } 
  92.  
  93.             Console.WriteLine("-----------------------"); 
  94.             Console.WriteLine(); 
  95.         } 
  96.     } 

篩選返回的成員種類

可以調用Type的GetMembers,GetFields,GetMethods,GetProperties或者GetEvenents方法來查詢一個類型的成員。在調用上面的任何一個方法時,都可以傳遞System.Reflection.BindingFlags枚舉類型的一個實例,使用這個枚舉類型目的是對這些方法返回的成員進行篩選。對于這個枚舉類型中成員的信息可以參考MSDN:http://msdn.microsoft.com/zh-cn/library/system.reflection.bindingflags(v=VS.80).aspx

注意:在返回一個成員集合的所有方法中, 都有一個不獲取任何實參的重載版本。如果不傳遞BindingFlags實參,所有這些方法都返回公共成員,默認設置為BindingFlags.Public|BindingFlags.Instance|BindingFlags.Static. (如果指定Public或NonPublic,那么必須同時指定Instance,否則不返回成員)。

 

原文鏈接:http://www.cnblogs.com/zhili/archive/2012/07/08/AssemblyLoad_and_Reflection.html

【編輯推薦】

 

責任編輯:彭凡 來源: 博客園
相關推薦

2012-02-08 10:12:19

Java反射

2009-02-03 09:42:53

JAVA類JVM指令forName方法

2023-10-17 09:26:44

Java工具

2012-02-08 09:44:52

Java反射

2012-04-05 13:50:38

Java

2013-10-12 13:26:08

設計加載

2011-05-26 15:23:34

JavaReflection

2011-09-27 10:23:24

Java反射機制

2017-05-17 15:28:15

Java反射機制

2011-03-09 09:11:52

java反射機制

2010-08-11 09:40:44

LINQ

2017-03-24 09:44:33

Java反射機制

2011-11-23 14:40:36

程序員

2013-03-14 09:54:54

jQueryJS

2024-09-29 09:02:17

Go語言類型

2025-10-31 02:00:00

2018-01-12 10:25:48

Nginx信號集master

2018-08-06 14:18:09

Linux應用程序技術

2011-04-01 14:50:56

Java的反射機制

2009-06-17 13:57:54

java實例Reflection
點贊
收藏

51CTO技術棧公眾號

久久久99精品视频| xxxxxxxxx欧美| 欧美在线一区视频| 户外极限露出调教在线视频| 精品无人码麻豆乱码1区2区 | 在线精品国精品国产尤物884a| 日韩视频精品| 丰满人妻av一区二区三区| 另类国产ts人妖高潮视频| 日韩小视频网址| jlzzjizz在线播放观看| 亚洲一区导航| 欧美日韩国产精品一区| 日本黄色a视频| 日韩在线无毛| 风间由美一区二区三区在线观看| 国产成人免费av电影| 久久国产在线观看| 日韩影院二区| 日韩电影大片中文字幕| 一起草最新网址| 99riav视频一区二区| 午夜久久久久久久久久一区二区| 一区二区视频在线播放| 国产小视频在线播放| 成人在线综合网| 91中文字幕一区| 伊人成年综合网| 国产精品亚洲产品| 久久久久久亚洲精品| 成人一级黄色大片| 欧美自拍偷拍| 亚洲欧美日韩一区二区三区在线| 男男一级淫片免费播放| 日韩三级av高清片| 欧美福利一区二区| 日本不卡一区在线| 日本h片久久| 一本大道综合伊人精品热热 | 亚洲精品一区在线观看| 日韩a一级欧美一级| 国产精品高潮久久| 在线观看亚洲精品视频| 116极品美女午夜一级| av资源中文在线天堂| 亚洲午夜av在线| 日韩一级免费看| a级网站在线播放| 亚洲少妇最新在线视频| 日本一级淫片演员| 成人看片免费| 亚洲人成在线观看一区二区| 人人妻人人澡人人爽精品欧美一区| 99青草视频在线播放视| 国产精品福利影院| 一级特黄录像免费播放全99| 日本韩国在线视频爽| 亚洲欧洲一区二区三区| 一级一片免费播放| 在线观看电影av| 亚洲精品视频在线看| 国产 国语对白 露脸 | 琪琪第一精品导航| 波多野结衣视频在线观看| 久久久噜噜噜久久狠狠50岁| 国产成人精品一区二区| 久草热在线观看| 老司机精品视频一区二区三区| 国产在线播放91| 国产成人三级在线播放| 不卡一区二区三区四区| 麻豆91蜜桃| 成人在线观看网站| 亚洲特级片在线| 被灌满精子的波多野结衣| 天堂√8在线中文| 欧美优质美女网站| 欧美一级特黄aaa| 久久精品福利| 在线a欧美视频| 欧美国产日韩在线观看成人| 亚洲二区免费| 国产精品国产三级国产aⅴ浪潮| 中文字幕欧美在线观看| 国产精品白丝jk黑袜喷水| 国内精品一区二区| 国产精品免费播放| 亚洲精品成人a在线观看| 国自产拍偷拍精品啪啪一区二区| 中文字幕日本一区二区| 日韩午夜av电影| 一区二区黄色片| 重囗味另类老妇506070| 欧美在线免费视频| 国产毛片久久久久| 久久夜色精品国产欧美乱极品| 亚洲蜜桃在线| 鲁鲁在线中文| 欧美精品九九99久久| 国产极品一区二区| 99久久夜色精品国产亚洲1000部| 国模极品一区二区三区| 伊人久久成人网| 97se亚洲国产综合在线| 一本一道久久a久久精品综合| 蜜桃麻豆影像在线观看| 制服丝袜国产精品| 人妻大战黑人白浆狂泄| 午夜国产精品视频免费体验区| 青青在线视频一区二区三区| 国产情侣自拍小视频| 国产日韩欧美精品一区| 黄色网zhan| 国模一区二区| 日韩精品免费在线视频观看| 久久久久久久久毛片| 麻豆精品久久精品色综合| 精品国产乱码久久久久久郑州公司| 色三级在线观看| 色综合久久久久网| 青青草视频网站| 欧美1区视频| 国产综合色香蕉精品| 九色在线播放| 天天综合网天天综合色| 国产精品一区二区在线免费观看| 香蕉国产精品| 国产精品亚洲精品| 国产高清在线观看| 一本到一区二区三区| 国产老熟女伦老熟妇露脸| 欧美日韩伊人| 91免费观看| 精品视频在线一区二区| 欧美区一区二区三区| 国产熟女一区二区| 日本不卡在线视频| 日韩欧美一区二区视频在线播放| 蜜桃视频动漫在线播放| 日韩av资源在线播放| 好吊操这里只有精品| 成+人+亚洲+综合天堂| 丁香六月激情婷婷| 看全色黄大色大片免费久久久| 欧美人在线视频| 午夜精品久久久久久久99老熟妇 | 久久亚洲影视婷婷| 久艹视频在线免费观看| 国产精品x8x8一区二区| 国a精品视频大全| 手机av在线免费观看| 亚洲第一搞黄网站| 北岛玲一区二区| 国产一区二区你懂的| 欧美激情国产日韩| 日韩成人高清| 日韩性生活视频| 国产精品女同一区二区| 亚洲蜜臀av乱码久久精品蜜桃| 中文 日韩 欧美| 伊人久久大香线蕉av超碰| 亚洲自拍偷拍九九九| 在线免费观看av网| 欧美日一区二区三区在线观看国产免| 久久国产精品免费视频| 国风产精品一区二区| 久久99久久98精品免观看软件 | 日韩网址在线观看| 午夜精品影视国产一区在线麻豆| 555www成人网| 国自产拍在线网站网址视频| 欧美在线观看你懂的| 看黄色录像一级片| 国产乱子伦一区二区三区国色天香| 天堂av在线中文| 精品在线网站观看| 国产精品99久久久久久久久| 日本激情在线观看| 亚洲精品一区二区在线观看| 国产一卡二卡三卡| 亚洲女厕所小便bbb| 黄色免费视频网站| 日韩av网站在线观看| 欧洲xxxxx| 亚洲电影男人天堂| 国产日韩欧美在线视频观看| 丁香花在线影院| 伊人av综合网| 亚洲成人av综合| 色视频欧美一区二区三区| 日韩精品123区| 97久久精品人人澡人人爽| 中文字幕视频在线免费观看| 欧美黄色一级视频| 欧美一级片免费观看| 久久久91麻豆精品国产一区| 97在线视频免费播放| 欧美成人二区| 国产午夜精品理论片a级探花| 一级爱爱免费视频| 精品国产乱码久久久久久婷婷| 5566中文字幕| 久久综合色之久久综合| 久久久久亚洲av无码麻豆| 久久狠狠婷婷| 久青草视频在线播放| 久久香蕉国产| 欧美极品日韩| 岛国av一区| 成人在线观看视频网站| 新片速递亚洲合集欧美合集| 欧美大片免费观看在线观看网站推荐| 国产在线三区| 亚洲精品久久久久国产| www.超碰在线.com| 欧美精品日韩精品| 在线免费观看国产精品| 欧美日韩国产在线看| 欧美人妻精品一区二区免费看| 中文一区一区三区高中清不卡| 久久人妻一区二区| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 国产黑人绿帽在线第一区| 大香伊人中文字幕精品| 久久久成人精品| av电影在线观看| 亚洲日本欧美日韩高观看| 手机在线观看免费av| 日韩精品一区二区三区老鸭窝 | 亚洲国产成人91精品| 国产精品男人的天堂| 这里有精品可以观看| 久久免费精品视频| 亚洲资源一区| 不卡av电影院| 国产黄色在线网站| 成人深夜在线观看| 中文字幕av不卡在线| 久久久精品网| 中国丰满人妻videoshd| 国产亚洲在线| 成人观看免费完整观看| 午夜在线播放视频欧美| 亚洲中文字幕无码不卡电影| 免费亚洲网站| 久久精品视频91| 久久久夜精品| 日本激情视频在线| 奇米一区二区三区| 亚州精品一二三区| 美女免费视频一区| 国产成人美女视频| 国产乱人伦偷精品视频免下载| 日韩 国产 一区| 国产剧情一区在线| www.四虎精品| 99视频热这里只有精品免费| 人妻少妇精品视频一区二区三区| 26uuu精品一区二区| 国产免费无遮挡吸奶头视频| 国产精品午夜久久| 日本黄色小说视频| 亚洲午夜精品在线| 精品国产一区二区三区四| 在线视频综合导航| 96日本xxxxxⅹxxx17| 日韩一区二区三区在线| 五月天婷婷在线观看| 亚洲午夜av久久乱码| 日本网站在线免费观看视频| 另类图片亚洲另类| 黑人精品视频| 国产成人综合亚洲| 精品久久免费| 九九九九久久久久| 91偷拍一区二区三区精品| 97在线免费视频观看| 国产欧美日韩综合一区在线播放 | 久久综合av免费| 少妇无套高潮一二三区| 国产精品久久二区| 久久久久久久性潮| aa成人免费视频| 一区三区在线欧| 国产a级片免费看| 一区二区三区国产在线| www.精品在线| 成人免费av资源| 妺妺窝人体色WWW精品| 亚洲激情一二三区| 无码免费一区二区三区| 欧美成人国产一区二区| 九色在线免费| 久久久视频免费观看| 成人国产一区| 精品麻豆av| 自拍偷拍欧美| 国产aaaaa毛片| 成人午夜av电影| 亚洲伦理一区二区三区| 高跟丝袜一区二区三区| 国产女18毛片多18精品| 国产一区二区欧美日韩| heyzo高清国产精品| 成人精品网站在线观看| 精品中文字幕一区二区三区av| 日韩a级黄色片| 蜜桃视频在线一区| 丰满少妇一区二区三区| 一级精品视频在线观看宜春院| 中文字幕免费播放| 亚洲欧美在线一区| av岛国在线| 国产不卡一区二区三区在线观看| 久久国产精品亚洲人一区二区三区| 国产中文字幕在线免费观看| 国产高清不卡一区二区| 欧美性生给视频| 日本精品一级二级| 欧洲一区av| 97视频免费在线观看| 超碰成人福利| www.激情网| 国产乱码精品一品二品| 中文字幕乱码av| 欧美色涩在线第一页| 国内精品在线视频| 奇米四色中文综合久久| 亚洲欧洲免费| 国产精品视频一区二区三区四区五区| 不卡的看片网站| 日韩激情一区二区三区| 精品欧美乱码久久久久久| 操你啦在线视频| 91在线免费网站| 欧美96在线丨欧| 自拍一级黄色片| 亚洲精品视频在线观看免费 | 欧美一级二级三级乱码| 黄色动漫在线观看| 91欧美视频网站| 伊人久久大香线| 伊人av在线播放| 洋洋av久久久久久久一区| 亚洲欧美另类综合| 国语自产精品视频在线看| 欧美五码在线| 亚洲 高清 成人 动漫| 久久欧美中文字幕| 免费无码国产精品| 在线看日韩欧美| 亚洲国产91视频| japanese在线播放| 成人精品视频一区二区三区尤物| 久青草免费视频| 日韩成人在线免费观看| 久久夜夜操妹子| 亚洲精品高清视频| 国产乱码字幕精品高清av | 欧美视频免费在线观看| 可以在线观看的av| 国产精品美女在线| 99热国内精品永久免费观看| 男生和女生一起差差差视频| 亚洲国产精品久久人人爱| 四虎在线免费看| 国产精品视频久久久| 在线观看国产精品入口| 免费看黄色片的网站| 色综合天天综合给合国产| av影片免费在线观看| 91传媒视频免费| 国产一区白浆| 永久免费看片直接| 欧美黑人xxxⅹ高潮交| 国产精品一区二区美女视频免费看 | 99久久婷婷这里只有精品| 特种兵之深入敌后| 欧美日韩中文在线观看| 日本中文在线| av在线播放一区二区| 亚洲一区二区三区欧美| 国产精品夜夜爽| 草久久免费视频| 日韩在线中文字| 国产精品qvod| 在线观看免费视频高清游戏推荐| 亚洲欧美视频在线观看| 香蕉久久国产av一区二区| 国产精品一区二区久久精品| 亚洲欧美一级二级三级| 男人天堂av电影| 欧美一级高清片| 波多视频一区| 亚洲一区 在线播放| 久久精品视频在线看| 性做久久久久久久久久| 国产精品视频导航| 国产精品一级| 久草视频在线免费看|