C#使用域进行加载dll获取方法名称被占用
2017-08-22 14:55
483 查看
public class MyMarshalByRefObject : MarshalByRefObject { public string dll_path = string.Empty; Assembly assembly = null; public void Load_Dll() { assembly = Assembly.LoadFile(dll_path); } /// <summary> /// 运行规则 /// </summary> /// <param name="strtype">空间</param> /// <param name="MethodName">函数名</param> /// <param name="parameters">参数</param> /// <param name="types">参数对应类型</param> public void RunCommand(string strtype, string MethodName, object[] parameters = null, Type[] types = null ) { if (MethodName != "") { //创建类实例 object tdll = assembly.CreateInstance(strtype); if (types == null) { types = new Type[] { }; } //获取方法 MethodInfo m = tdll.GetType().GetMethod(MethodName, types); //委托调用 object obj = m.Invoke(tdll, parameters); string message = "函数名:" + MethodName + "\n"; if (obj != null) { message += "结果:" + obj.ToString(); } else { message += "结果:void"; } Log.WriteLine(message, "函数结果"); return; } else { Log.WriteLine("规则名不能为空!", "函数调用错误"); } } internal MethodInfo[] GetMethodNames(string strtype) { object tdll = assembly.CreateInstance(strtype); //重新生成报错dll被占用 MethodInfo[] methodInfos = tdll.GetType().GetMethods(BindingFlags.Public|BindingFlags.Instance ); return methodInfos; } }
GetMethodNames调用这个函数之后再次重新编译dll 还是报错dll被占用 暂时放弃这个方法不用
相关文章推荐
- C# 使用Nlog记录日志到数据库 使用LogEventInfo类获取,命名空间名称、类名、方法名
- 获取系统时间几种方法 和 使用CPU时间戳进行高精度计时收藏
- C#实现反射调用动态加载的DLL文件中的方法
- js操作cookie;js的setInterval;C#获取指定页面的内容;Ajax.dll的使用
- c#获取数据库中所有表名称的方法
- OPCDAAuto.dll的C#使用方法浅析
- [转]使用C#进行图像处理的几种方法
- [c#美味]使用Http Head方法获取文件长度
- C#实例化指定名称的类,使用其方法,字段
- c#获取数据库中所有表名称的方法
- c#获取dll物理路径的方法
- MFC中使用C#编写的Dll的方法
- 获取某个网页中的全部url及对应的名称(使用c#实现的类)
- C#实现反射调用动态加载的DLL文件中的方法
- C#实现反射调用动态加载的DLL文件中的方法
- C#中使用反射来动态加载和卸载DLL
- c# winform程序调用托管dll(c#的dll),使用"添加引用"和动态加载dll
- [转]使用C#进行图像处理的几种方法
- 笔记备忘: 在 C# 中进行 win32 dll 的动态加载, 调用, 和释放
- 获取系统时间几种方法 和 使用CPU时间戳进行高精度计时收藏