dll函数库源码

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace cl1 { public class Class1 { private string Name; private int Age; public Class1() { Name = "name"; Age = 0; } public Class1(string name) { Name = name; Age = 0; } public Class1(string name,int age) { Name = name; Age = age; } public static void M1() { MessageBox.Show("静态无参函数"); } public static void M2(string name) { MessageBox.Show($"静态带参函数String{name}"); } public static void M2(string name, int age) { MessageBox.Show($"静态带参函数int{name+age}"); } public void M3() { MessageBox.Show($"非静态无参函数name={Name},age={Age}"); } public void M4(string name) { MessageBox.Show($"非静态带参函数string{name}"); } public void M4(int age) { MessageBox.Show($"非静态带参函数int{age}"); } public void M5(string name) { MessageBox.Show(name); } } }
调用尝试

public static void test() { Assembly assembly; Type type; string path = @"G:BaseSelfBasiccl1inDebugcl1.dll"; assembly = Assembly.LoadFrom(path); //获取程序集实例中具有指定名称的Type对象 type = assembly.GetType("cl1.Class1"); //获取Class1对象 var C1 = Activator.CreateInstance(type);//构造函数public Class1() var C2 = Activator.CreateInstance(type, "string");//构造函数public Class1(string name) var C3 = Activator.CreateInstance(type, "string", 123);//构造函数public Class1(string name,int age) //获取方法 var m1 = type.GetMethod("M1");//方法名M1在Class1类中没有重载,获取明确 方法为私有或不存在时返回null var val1 = m1.Invoke(null, null);//运行m1 M1函数为静态的,且无参,Invoke中参数可为null var m2 = type.GetMethod("M2", new Type[] { typeof(string) });//获取public static void M2(string name) var val2 = m2.Invoke(null, new object[] { "str" });//运行m2 var m3 = type.GetMethod("M2", new Type[] { typeof(string), typeof(int) });//获取public static void M2(string name, int age) var val3 = m3.Invoke(null, new object[] { "str", 124 });//运行m3 //非静态函数的获取及调用 var m4 = type.GetMethod("M3"); var val4 = m4.Invoke(C1, null); val4 = m4.Invoke(C2, null); val4 = m4.Invoke(C3, null); var m5 = type.GetMethod("M4", new Type[] { typeof(string) }); var val5 = m5.Invoke(C1, new object[] { "dtr" }); val5 = m5.Invoke(C2, new object[] { "dtr" }); val5 = m5.Invoke(C3, new object[] { "dtr" }); var m6 = type.GetMethod("M4", new Type[] { typeof(int) }); var val6 = m6.Invoke(C1, new object[] { 225 }); val6 = m6.Invoke(C2, new object[] { 225 }); val6 = m6.Invoke(C3, new object[] { 225 }); }