谈谈C#反射(Reflection)
生活随笔
收集整理的這篇文章主要介紹了
谈谈C#反射(Reflection)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
反射是什么?官方給出的解釋:反射提供了封裝程序集、模塊和類型的對象(System.Type類型)。可以使用反射動態(tài)創(chuàng)建類型的實例,將類型綁定到現(xiàn)有對象,或從現(xiàn)有對象獲取類型并調(diào)用其方法或訪問其字段和屬性。
個人理解:在運行態(tài)下,動態(tài)訪問、修改自身的功能。今天我們利用反射為程序動態(tài)加載程序集(Assembly),System.Reflection命名空間是我們實現(xiàn)該功能的基礎(chǔ)。
代碼如下:
public static void Main(string[] args) {//AssemblyResolve事件在.Net對程序集解析失敗時觸發(fā),返回一個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() {//調(diào)用程序集中包含的接口,接口不能直接放在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
轉(zhuǎn)載于:https://www.cnblogs.com/boxy/p/11453809.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的谈谈C#反射(Reflection)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20190808面试记录
- 下一篇: 弄懂goroutine调度原理