谈谈C#反射(Reflection)
生活随笔
收集整理的這篇文章主要介紹了
谈谈C#反射(Reflection)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
反射是什么?官方給出的解釋:反射提供了封裝程序集、模塊和類型的對象(System.Type類型)。可以使用反射動態創建類型的實例,將類型綁定到現有對象,或從現有對象獲取類型并調用其方法或訪問其字段和屬性。
個人理解:在運行態下,動態訪問、修改自身的功能。今天我們利用反射為程序動態加載程序集(Assembly),System.Reflection命名空間是我們實現該功能的基礎。
代碼如下:
public static void Main(string[] args) {//AssemblyResolve事件在.Net對程序集解析失敗時觸發,返回一個Assembly對象。AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(OnResolve);//功能Startup(); }public static Assembly OnResolve(object sender, ResolveEventArgs args) {var assemblyName = new AssemblyName(args.Name);string path = "";if (assemblyName.Name.EndsWith("WuXiaoBo"))path = @"C:\Program Files\Java\wuxiaobo.dll";if (string.IsNullOrEmpty(path) == false&& File.Exists(path))return Assembly.LoadFrom(path);return null; }public static void Startup() {//調用程序集中包含的接口,接口不能直接放在Main中。 }代碼很簡單,就不過多解釋了。
?
參考資料:
https://docs.microsoft.com/zh-cn/dotnet/api/system.appdomain.assemblyresolve?view=netframework-4.6.1
https://www.cnblogs.com/darrenji/archive/2014/09/26/3995450.html
http://blog.junwen38.com/archives/656
轉載于:https://www.cnblogs.com/boxy/p/11453809.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的谈谈C#反射(Reflection)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20190808面试记录
- 下一篇: 程序异常退出后,托盘残留图标清理方法(C