Попытка понять шаблон агрегатора событий - PullRequest
14 голосов
/ 09 августа 2010

Я пытаюсь реализовать шаблон агрегатора событий простым способом, чтобы изучить его шаг за шагом.Но я не нашел ни одной книги или хорошего видеоруководства, рассказывающего о его реализации.
Я только что нашел несколько хороших статей, таких как http://weblogs.asp.net/rashid/archive/2009/03/05/use-event-aggregator-to-make-your-application-more-extensible.aspx и http://martinfowler.com/eaaDev/EventAggregator.html, первая статья слишком большая, чтобы позволитья понимаю шаблон, и второй не завершен:).
Кстати, я создал свои классы:

public class Member
{
    public int ID { get; set; }

    public string UserName { get; set; }
}

public class MemberService
{
    public void CommentSubmited()
    {
        // increase member score and do some other logic.
    }
}

public class Comment
{
    public int ID { get; set; }

    public string CommentBody { get; set; }

    public Member ByMember { get; set; }
}

public class CommentService
{
    public void SubmitNewComment(Member member, string commentBody, EventAggregator eventAggregator)
    {
        Comment comment = new Comment();
        comment.ByMember = member;
        comment.CommentBody = commentBody;

        db.SaveComment(comment); // save comment to the db

        //eventAggregator.GetEvent<CommentSubmited>.Fire();
    }
}

public class EventAggregator
{
    public void RegisterEvent()
    {

    }

    public void RemoveEvent()
    {

    }
}

И что я хочу, это создать общий способ, чтобы когда-либо новыйКомментарий создал метод CommentSubmited() для Fire.
Я хочу, чтобы он был универсальным, потому что позже будет больше сервисов, таких как RateService, QuestionService, .... и у каждого из них будет метод XXXSubmited() в классе MemberService.

Надеюсь, вы поняли, что я хочу узнать, спросите меня, хотите ли вы, чтобы я прояснил ситуацию.

Обратите внимание, что я проверил тему Общие делегаты и подумал, что это может помочья в этом выпуске, но не смог сделать так, как хотел.

Ответы [ 2 ]

6 голосов
/ 12 февраля 2012

Карл Шиффлетт (команда шаблонов и практик Microsoft) сделал видео , где он просматривает шаблон Event Aggregator и объясняет, как он использовал его в своем приложении Stuff WPF / MVVM. Его запись в блоге содержит больше информации о его проекте, и исходный код также доступен для скачивания. Мне показалось, что его пример приложения и видео очень полезны во время обучения.

6 голосов
/ 09 августа 2010

Проверьте этот пост на простом агрегаторе событий, используя Rx: Агрегатор событий с реактивными расширениями

...