有没有办法可以找出哪个UI元素向Dispatcher队列发布了最终抛出事件的操作System.Windows.Threading.Dispatcher.CurrentDispatcher.Hooks.OperationPosted
更新:私有属性DispatcherOperation.Name
在调试模式下显示VS鼠标悬停所需的内容。我只需要将此名称打印到记录器以进行其他调试。是否可以动态提取Name
。
答案 0 :(得分:0)
是的,这是可能的,虽然我给你一个方法来做,但我必须警告你,使用反射获取私人或受保护的字段/属性/方法永远不是一个好主意,因为首先他们通常是私人的一个原因第二,如果签名或界面发生变化,您的代码可能会中断。但是因为你说它只是用于调试,所以这可能是一个有价值的解决方案。
您可以随时使用Reflection来完成这些事情。首先,您需要要读取其私有属性的对象的类型和实例。不幸的是,我不知道您要查找的名称是字段还是属性,但整个过程类似。首先使用GetProperty获取属性,然后在返回的PropertyInfo
对象上调用GetValue。您可能希望缓存PropertyInfo对象以在调试时获得一些速度。你还需要再次使用正确的BindingFlags我不知道如何描述字段/属性,所以我不能给你确切的代码,但是从这里可以很容易理解。
希望有所帮助。