我应该使用某种库或编写一些代码(或使用其他方式)来检查任意对象上调用事件的顺序吗?

本文关键字:对象 检查 调用 任意 顺序 事件 其他 我应该 代码 方式 | 更新日期: 2023-09-27 17:50:42

我的目标是编写这样的代码:

var ei = new EventInterceptor(_someInstance);
ei.EventFired += (s,e) => { Logger.Log("{0} fired {1}", s.ToString(), e.ToString(); }

认为我可以用反射逻辑写出来,但是如果有什么我宁愿用它。这将是非常有用的(我认为)研究复杂的对象,如ado.net和winforms的datagridview…

我应该使用某种库或编写一些代码(或使用其他方式)来检查任意对象上调用事件的顺序吗?

基于反射的事件跟踪器可从davidbakin @ CodeProject:

跟踪任何c#对象引发的事件

替代方案:如果你的平台是Vista或Windows 7,你可以尝试Windows的事件跟踪(ETW),尽管学习曲线似乎有点陡峭。

另外,在一个相关问题的答案中给出了一个事件记录器类的建议(可能类似于Code Project文章)。