我的目标是编写这样的代码:
var ei = new EventInterceptor(_someInstance);
ei.EventFired += (s,e) => { Logger.Log("{0} fired {1}", s.ToString(), e.ToString(); }
我想我可以用反射逻辑来写这个,但如果有什么东西我宁愿使用它。这对于研究ado.net和winforms datagridview等复杂对象非常有用(我认为)...
答案 0 :(得分:1)
基于反射的事件跟踪器可从davidbakin @ CodeProject获得:
Tracing Events Raised by Any C# Object
备选方案:如果您的平台是Vista或Windows 7,您可以尝试Event Tracing for Windows(ETW),虽然看起来学习曲线有点陡峭。
此外,the answer to a related question中提供了一个事件记录器类的建议(可能类似于Code Project文章)。