首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Caliburn.Micro:记录每个ActionMessage?

Caliburn.Micro:记录每个ActionMessage?
EN

Stack Overflow用户
提问于 2011-03-11 23:39:44
回答 2查看 412关注 0票数 1

我们在Caliburn.Micro上开始了一个新的Silverlight项目。我们需要通过谷歌分析记录每个用户的互动。有没有办法在每次发送任何ActionMessage时都执行一些代码?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-12 00:19:28

幸运的是,这很容易。将ActionMessage.InvokeAction替换为您自己的方法,该方法执行日志记录,然后调用原始方法。您需要在Bootstrapper的Configure override中执行此操作。您的代码将如下所示:

代码语言:javascript
复制
var originalInvoke = ActionMessage.InvokeAction
ActionMessage.InvokeAction = context => {
    //do logging here using the context
    originalInvoke(context);
}

非那样做不行。从上下文变量中,您可以获得触发调用的MethodInfo、标记视图模型、视图、EventArgs和源元素。

票数 3
EN

Stack Overflow用户

发布于 2011-03-12 00:17:33

我自己还没有尝试过,但是ActionMessage有一个InvokeAction公共委托,所以你可以订阅这个调用列表,也许在你的引导程序的Configure方法中:

代码语言:javascript
复制
ActionMessage.InvokeAction +=
  c => { throw new Exception(string.Format("Method '{0}' invoked", c.Method.Name)); };

您将收到一个ActionExecutionContext,它将为您提供有关该操作的信息。

也许做一些比抛出异常更有用的事情:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5274984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档