一、获取 命名空间 类名 方法名
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Reflection; namespace GetMethodNameSpace { class Program { public static string GetMethodInfo() { string str = ""; //取得当前方法命名空间 str += "命名空间名:" + System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Namespace + " "; //取得当前方法类全名 str += "类名:" + System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName + " "; //取得当前方法名 str += "方法名:" + System.Reflection.MethodBase.GetCurrentMethod().Name + " "; str += " "; StackTrace ss = new StackTrace(true); MethodBase mb = ss.GetFrame(1).GetMethod(); //取得父方法命名空间 str += mb.DeclaringType.Namespace + " "; //取得父方法类名 str += mb.DeclaringType.Name + " "; //取得父方法类全名 str += mb.DeclaringType.FullName + " "; //取得父方法名 str += mb.Name + " "; return str; } public static void Main() { Console.WriteLine(GetMethodInfo()); Console.ReadKey(); } } }
二、利用反射动态加载dll
头部引用加:
using System.Reflection;
Assembly asm = Assembly.LoadFrom(AppDomain.CurrentDomain.BaseDirectory+ "/DeclareDLL/YunDouTaxLib.dll");////我们要调用的dll文件路径 //加载dll后,需要使用dll中某类. Type t = asm.GetType("namespace.classname");//获取类名,必须 命名空间+类名 //实例化类型 object o = Activator.CreateInstance(t); //得到要调用的某类型的方法 MethodInfo method = t.GetMethod("functionname");//functionname:方法名字 object[] obj = { Parameters[0].TaxpayerName, Parameters[0].TaxpayerTaxCode, Parameters[0].CAPassword }; //对方法进行调用 var keyData = method.Invoke(o, obj);//param为方法参数object数组
三,没有Assembly.LoadFrom 需要在程序中加引用