反射的简单应用(记录)

  最近工作中要用到反射,而之前只是粗浅的了解而已,借着假期,大清早的我就起床来实现了。首先,为了理解反射的实现过程,我重新复习了一遍反射的基本概念相关知识(此处省略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();
        }
    }
}
复制代码

最终结果如图:

posted @   西安-DB  阅读(563)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示