理解C#反射
参考文章:http://blog.csdn.net/educast/article/details/2894892
上面的文章将C#反射要用到的方法都给出了,下面我将写个例子,帮助理解
【1.使用反射读取程序集】
namespace Ref { class Program { static void Main(string[] args) { //读取程序集 Assembly ass = Assembly.Load("Ref"); //获取Ref程序集中的Program类 Type t = ass.GetType("Ref.Program"); //根据获取到的类创建实例 object o = Activator.CreateInstance(t); //获取方法 MethodInfo mi = t.GetMethod("Show"); //反射调用自己的方法(需要传递其类,如果是静态方法则不需要传递o,写成null就行) mi.Invoke(o, null); } public void Show() { Console.WriteLine("显示22"); } } }
【2.通过类库DLL文件的反射】
[链接:使用VS制作Dll文件]http://blog.csdn.net/u010026134/article/details/51598499
使用VS的功能,添加新建项目---类库,比如写了以下代码
namespace MyDll { public class Class1 { } public class SayAndSee { public string say = "isOk?"; public void MyFun() { string see = "isee"; Console.WriteLine("我看见你了"); } public int Cau(int num1, int num2) { return num1 + num2; } } }
然后点击生成---生成解决方法,这样我们就可以在DEBUG目录下获取到这个类的Dll文件了,获取其DLL文件路径
接下来就可以去使用了
namespace RefDLL { class Program { static void Main(string[] args) { //读取DLL文件 Assembly assembly = Assembly.LoadFrom(@"C:\Users\zts.FORTUNE\Documents\Visual Studio 2015\Projects\Test3\RefDLL\bin\Debug\MyDll.dll"); //获取MyDll程序集中的SayAndSee类 Type t = assembly.GetType("MyDll.SayAndSee"); //根据获取到的类创建实例 object o = Activator.CreateInstance(t); //获取方法 MethodInfo mi = t.GetMethod("MyFun"); //反射调用自己的方法(需要传递其类,如果是静态方法则不需要传递o,写成null就行) mi.Invoke(o, null); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~