反射的简单应用(记录)
最近工作中要用到反射,而之前只是粗浅的了解而已,借着假期,大清早的我就起床来实现了。首先,为了理解反射的实现过程,我重新复习了一遍反射的基本概念相关知识(此处省略N个字)。
先展示下我的第一个反射例子,该实例当中,我是用一个 控制台应用程序,实现最简单的反射程序:主程序(Console Application)反射一个单独的类库DLL文件,去实现该DLL文件内部定义的一个加法运算 Addition(int Num1, int Num2);
namespace MyDLL { public class Operation { public string Addition(int Num1, int Num2) { return string.Format("Num1:{0},Num2:{1}, the Result:{2}" , Num1, Num2, Num1 + Num2); } } }
文库文件中这个方法相当简单,此处只为入门。
编译该类库文件,得到DLL文件,复制到 主程序的Bin 目录,即 Console Application Bin 下 : \反射应用实例\bin\Debug\dlls\MyDLL.dll (关于我这个命名,若你看到并注意到,了解我的意思就行,请不要过于关心这些细枝末节,下同。)
主程序代码如下:
using System; using System.Reflection; namespace 反射应用实例 { class Program { static void Main(string[] args) { string DllPath = @"\dlls\"; string DllName = "MyDLL.dll"; Console.WriteLine("DllPath:{0} \n DLLName:{1}", DllPath, DllName); string BaseDirectory = AppDomain.CurrentDomain.BaseDirectory; Console.WriteLine("要反射的DLL路径:{0}", BaseDirectory + DllPath + DllName); //加载DLL Assembly assembly = Assembly.LoadFrom(BaseDirectory + DllPath + DllName); System.Type type = assembly.GetType("MyDLL.Operation");//获得类型 object obj = System.Activator.CreateInstance(type);//创建实例 MethodInfo method = type.GetMethod("Addition"); object result = method.Invoke(obj, new object[] { 10, 20 }); Console.WriteLine("反射调用并计算结果:{0}", result); Console.ReadKey(); } } }
最终结果如图:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库