C# 反射 主程序怎么监听DLL的事件?

DreamOfRyze 2018-06-23 11:18:35
static void Main(string[] args)
{
string path = @"D:\lassLibrary1Demo.dll";
Assembly ass = Assembly.LoadFile(path); //获取DLL的集合
Type tp = ass.GetType("lassLibrary1Demo.Sample1"); //获得DLL中的指定类型
object tmpobj = ass.CreateInstance("lassLibrary1Demo.Sample1"); //获得DLL中指定类的实例
//这里如何对DLL中的事件进行绑定呢?

}


public class Sample1
{
public delegate bool ReturnBoolHandler(string info);
public delegate void TestHandler(string msg);
public ReturnBoolHandler ReturnBoolEvent;
public TestHandler TestEvent;

public string Display()
{
if (ReturnBoolEvent != null)
ReturnBoolEvent("触发了返回bool值的事件");
if(TestEvent != null)
TestEvent("触发了无返回类型的事件");
return "无参数方法";
}
}
...全文
296 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
DreamOfRyze 2018-06-23
  • 打赏
  • 举报
回复
DreamOfRyze 2018-06-23
  • 打赏
  • 举报
回复
麻烦各位大哥给点提示
  • 打赏
  • 举报
回复
这是“偷”还是“架构”的区别。

如果你是偷别人一个代码,那么你可以反射所谓的事件。

但是假设你是架构一个动态插件系统,那么你的第二个工程应该先发布一个接口,然后第一个工程使用这个接口。这是一个正规架构方式。
xuzuning 2018-06-23
  • 打赏
  • 举报
回复
没有桩,钩子挂不上去
  • 打赏
  • 举报
回复
依据接口编程。 object tmpobj 这个声明不行,要把 tmpobj 声明为业务接口合同规范。

另外要说明的是,你的代码中有两个地方都没有写
public event
。没有按照规矩写代码。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧