亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

詳解C# 利用反射根據類名創建類的實例對象

2019-10-29 21:12:24
字體:
來源:轉載
供稿:網友

反射”其實就是利用程序集的元數據信息。 反射可以有很多方法,編寫程序時請先導入 System.Reflection 命名空間。

1、假設你要反射一個 DLL 中的類,并且沒有引用它(即未知的類型):

Assembly assembly = Assembly.LoadFile("程序集路徑,不能是相對路徑"); // 加載程序集(EXE 或 DLL) dynamic obj = assembly.CreateInstance("類的完全限定名(即包括命名空間)"); // 創建類的實例 

2、若要反射當前項目中的類(即當前項目已經引用它了)可以為:

Assembly assembly = Assembly.GetExecutingAssembly(); // 獲取當前程序集 dynamic obj = assembly.CreateInstance("類的完全限定名(即包括命名空間)"); // 創建類的實例,返回為 object 類型,需要強制類型轉換

3、也可以為:

Type type = Type.GetType("類的完全限定名"); dynamic obj = type.Assembly.CreateInstance(type); 

4、不同程序集的話,則要裝載調用,代碼如下:

System.Reflection.Assembly.Load("程序集名稱(不含文件后綴名)").CreateInstance("命名空間.類名", false);

如:

 

復制代碼 代碼如下:

dynamic o = System.Reflection.Assembly.Load("MyDll").CreateInstance("MyNameSpace.A", false);

 

注意:由于要用到dynamic ,需要把target 改為4.0 ,如果編譯時出現“找不到編譯動態表達式所需的一個或多個類型。是否缺少引用?”的錯誤,是因為缺少一個引用,在項目里引用Miscorsoft.CSharp類庫,添加后就能編譯成功。

=======================================================

補充:

1)反射創建某個類的實例時,必須保證使用類的完全限定名(命名空間 + 類名)。Type.GetType 方法返回 null 則意味搜索元數據中的相關信息失?。ǚ瓷涫。?,請確保反射時使用類的完全限定名。

2)反射功能十分強大,沒有什么不能實現的。若實現“跨程序集”,請使用第一種方法創建類的實例,并反射該實例的字段、屬性、方法、事件... 然后動態調用之。

  /// <summary>  /// 反射幫助類  /// </summary>  public static class ReflectionHelper  {    /// <summary>    /// 創建對象實例    /// </summary>    /// <typeparam name="T"></typeparam>    /// <param name="fullName">命名空間.類型名</param>    /// <param name="assemblyName">程序集</param>    /// <returns></returns>    public static T CreateInstance<T>(string fullName, string assemblyName)    {      string path = fullName + "," + assemblyName;//命名空間.類型名,程序集      Type o = Type.GetType(path);//加載類型      object obj = Activator.CreateInstance(o, true);//根據類型創建實例      return (T)obj;//類型轉換并返回    }    /// <summary>    /// 創建對象實例    /// </summary>    /// <typeparam name="T">要創建對象的類型</typeparam>    /// <param name="assemblyName">類型所在程序集名稱</param>    /// <param name="nameSpace">類型所在命名空間</param>    /// <param name="className">類型名</param>    /// <returns></returns>    public static T CreateInstance<T>(string assemblyName, string nameSpace, string className)    {      try      {        string fullName = nameSpace + "." + className;//命名空間.類型名        //此為第一種寫法        object ect = Assembly.Load(assemblyName).CreateInstance(fullName);//加載程序集,創建程序集里面的 命名空間.類型名 實例        return (T)ect;//類型轉換并返回        //下面是第二種寫法        //string path = fullName + "," + assemblyName;//命名空間.類型名,程序集        //Type o = Type.GetType(path);//加載類型        //object obj = Activator.CreateInstance(o, true);//根據類型創建實例        //return (T)obj;//類型轉換并返回      }      catch      {        //發生異常,返回類型的默認值        return default(T);      }    }  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美日韩久久久久久| 国产精品久久激情| 九九综合九九综合| 日韩欧美在线一区| 91美女片黄在线观| 欧美尤物巨大精品爽| 国产精品视频资源| 91sao在线观看国产| 欧美日韩在线一区| 激情久久av一区av二区av三区| 国产视频观看一区| 一区二区三区精品99久久| 欧美国产第二页| 欧美精品在线免费观看| 国产精品自产拍高潮在线观看| 久久国产一区二区三区| 亚洲一区美女视频在线观看免费| 亚洲淫片在线视频| 57pao成人永久免费视频| 国产精品ⅴa在线观看h| 成人免费看吃奶视频网站| 欧美成人自拍视频| 久久99精品久久久久久琪琪| 国产精品日韩欧美大师| 久久影院资源网| 日韩视频在线免费| 在线播放日韩av| 国产精品观看在线亚洲人成网| 亚洲在线www| 岛国av一区二区三区| 久久精品视频在线播放| 日韩美女激情视频| 亚洲精品免费一区二区三区| 欧美第一淫aaasss性| 欧美裸体视频网站| 欧美久久精品一级黑人c片| 一区二区三区 在线观看视| 国产精品久久久久久一区二区| 欧美激情亚洲自拍| 97视频免费在线看| 国产午夜精品全部视频在线播放| 欧美高清视频一区二区| 中文在线资源观看视频网站免费不卡| 国产偷国产偷亚洲清高网站| 欧美激情网友自拍| 久久免费观看视频| 日韩视频在线免费| 欧美性生交大片免网| 久久精品小视频| 欧美乱大交xxxxx另类电影| 国产又爽又黄的激情精品视频| 国产午夜精品视频| 欧美精品www在线观看| 色综合久久久久久中文网| 78色国产精品| 亚洲精品永久免费精品| 懂色av中文一区二区三区天美| 欧美wwwxxxx| 成人激情视频小说免费下载| 精品久久久久久电影| 国产精品视频yy9099| 亚洲网站在线看| 久久精品国产一区二区三区| 欧美大片在线看| 国产精品精品久久久| 91国产精品电影| 亚洲国产日韩精品在线| 97视频网站入口| 一区二区三区 在线观看视| 欧美日韩福利在线观看| 亚洲一级一级97网| 国内伊人久久久久久网站视频| 日本久久久久亚洲中字幕| 国产精品h在线观看| 亚洲自拍偷拍福利| 亚洲欧美国产精品久久久久久久| 亚洲a级在线观看| 亚洲精品中文字幕av| 欧美日韩激情小视频| 黄网动漫久久久| 国外成人在线视频| 亚洲三级 欧美三级| 久久久久国产精品www| 亚洲欧美三级伦理| 亚洲一区二区久久| 国产精品va在线播放| 欧美最顶级的aⅴ艳星| 欧美有码在线观看| 欧美在线视频免费观看| 懂色av影视一区二区三区| 久久久在线免费观看| 欧美成人精品在线| 亚洲高清一区二| 大胆人体色综合| 国产精品影院在线观看| 日韩中文字幕网| 欧美亚洲成人精品| 久久久999精品视频| 欧美在线视频免费| 国产精品永久免费在线| 欧美乱妇40p| 国产美女主播一区| 国产一区二区视频在线观看| 欧美大片第1页| 伊人久久免费视频| 国产女人18毛片水18精品| 欧美精品成人在线| 国产精品久久久久久久久影视| 国产亚洲欧洲黄色| 国产精品免费久久久久影院| 日韩精品中文在线观看| 国产日韩中文字幕在线| 国产精品678| 久久久久久久久久国产| 一区二区三区久久精品| 亚洲人成77777在线观看网| 国产一区二区久久精品| 国产精品吹潮在线观看| 成人国产精品久久久久久亚洲| 欧美性猛交xxxx| 国产精品久久久久久久久借妻| 日韩欧美在线免费| 日韩免费av在线| 久久久999国产精品| 久热精品视频在线| 欧美日韩国产精品一区二区不卡中文| 中文字幕在线观看亚洲| 51ⅴ精品国产91久久久久久| 亚洲尤物视频网| 亚洲成人av片| 欧美成人中文字幕在线| 国产精品久久久久久超碰| 92国产精品视频| 亚洲精品欧美日韩| 亚洲成**性毛茸茸| 91精品视频在线免费观看| 5566成人精品视频免费| 九九久久久久99精品| 97人人爽人人喊人人模波多| 日韩欧美亚洲范冰冰与中字| 91精品国产91久久久久久不卡| 国产精品美乳在线观看| 这里只有视频精品| 欧美黑人狂野猛交老妇| 中文字幕一区二区三区电影| 国产日韩精品在线观看| 成人在线国产精品| 91av在线国产| 欧美亚洲免费电影| 亚洲精品在线91| 国产成人精品久久| 欧美黑人性视频| 国产美女精品视频免费观看| 亚洲91精品在线观看| 2024亚洲男人天堂| 亚洲美女又黄又爽在线观看| 国产精品wwww| 精品国产精品三级精品av网址| 国产精品入口夜色视频大尺度| 日韩视频免费观看| 在线观看视频亚洲| 色哟哟亚洲精品一区二区| 国产精品99久久久久久白浆小说| 狠狠躁天天躁日日躁欧美|