Mvc3自定义事件挂钩

时间:2012-03-07 16:17:23

标签: asp.net-mvc-3 events

我有一个Mvc3-Project,我想注册自定义事件挂钩。

这样我就可以注册“用户登录”等活动。我不想在控制器中执行它,因为在其他项目中有一个业务逻辑。

所以在我的Mvc3-Project中,我想编写一些类,这些类将具有在用户启用时必须执行的代码。但是如何将这些类(或它们的实例)注册到事件中。使用反射搜索从特殊基类继承的所有类是一个好主意,还是有其他更聪明的方法?

所以再一次,我不想监视被调用的动作,我希望业务逻辑触发我的Mvc3-Project中的一些类。

1 个答案:

答案 0 :(得分:0)

修改
正如Chris在下面的评论中指出的那样,MVC3是无状态的,这意味着使用此解决方案,您将不得不在每个请求上重新订阅这些事件。对于MVC来说,这可能不是一个很好的解决方案。


您是否考虑过全球活动服务?

粗略的例子:


class Example : IEventReceiver
{
    public void Init()
    {
        EventService.Subscribe("Logon", this);
    }

    private void OnEvent(string eventName)
    {
        // Do logon stuff here.
    }
}

您需要创建EventService类,它可能是单例或服务。它可能具有类似于以下内容的界面:

public interface IEventService
{
    void Subscribe(string eventName, IEventReceiver receiver);
    void Unsubscribe(string eventName, IEventReceiver receiver);
    void DispatchEvent(string eventName);
}

public interface IEventReceiver
{
    void OnEvent(string eventName);
}