Heim > Artikel > Backend-Entwicklung > C# lädt DLL dynamisch
1. Erstellen Sie eine neue Test-DLL und -Methode und erstellen Sie mit vs2010 ein neues Winform-Programm. Der spezifische Code lautet wie folgt:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace reflect { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public string TestReflect() { MessageBox.Show("动态加载Dll测试"); return "TestReflect返回值"; } } }
2 Laden Sie den Code
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Reflection; namespace reflectTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //加载dll中的函数 //Assembly asm = Assembly.Load(strDllPath);//加载当前根目录的dll Assembly asm = Assembly.LoadFile(@"F:\WorkSpace\VS测试代码\反射测试001\反射message方法\reflect\reflect\bin\Debug\reflect.dll");//根据dll文件实际路径加载 //用类型的命名空间和类获得类型 System.Type FromClass = asm.GetType("reflect.Form1"); //需要实例化类型,才可以使用,参数可以人为的指定,也可以无参数,静态实例可以省略 Object obj = System.Activator.CreateInstance(FromClass); //通过方法名称获得方法(调试走到下面这一步的时候,就可以弹出“动态加载Dll测试”这个消息了) MethodInfo method = FromClass.GetMethod("TestReflect"); //获取TestReflect函数的返回值,在这里会获取到"TestReflect返回值",如果没有返回值,可以省略这一步 object o = method.Invoke(obj, new object[] { }); } } }
Kleiner Hinweis:
Rufen Sie die Methode über den Methodennamen ab. Die Methode in muss öffentlich sein !
Das Obige ist der Inhalt von C#, der Dll dynamisch lädt. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!