Пользовательские события Mvc3 - PullRequest
0 голосов
/ 07 марта 2012

У меня есть Mvc3-проект, в котором я хочу зарегистрироваться для пользовательских перехватчиков событий.

Чтобы я мог зарегистрироваться на событие типа «Вход пользователя в систему». Я не хочу делать это в контроллере, потому что за этим стоит бизнес-логика в другом проекте.

Так что в моем Mvc3-проекте я хочу написать несколько классов, которые будут иметь код, который должен выполняться при входе пользователя в систему. Но как мне зарегистрировать эти классы (или их экземпляры) на событие? Является ли хорошей идеей использовать отражение для поиска всех классов, унаследованных от специального базового класса, или есть другой более разумный способ?

Итак, еще раз, я не хочу отслеживать вызываемое действие, я хочу, чтобы бизнес-логика запускала некоторые классы в моем Mvc3-проекте.

1 Ответ

0 голосов
/ 07 марта 2012

EDIT
Как отмечает Крис в комментариях ниже, 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...