19

我正在尝试以一种简单的方式来实现事件聚合器模式,以逐步学习它。但是我没有找到任何关于它的实现的书或好的视频教程。
我刚刚发现了一些不错的文章,例如http://weblogs.asp.net/rashid/archive/2009/03/05/use-event-aggregator-to-make-your-application-more-extensible.aspxhttp ://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 类中都有一个方法。

希望你明白我想学什么,问我是否想让我把事情说得更清楚。

请注意,我检查了Generic Delegates 主题并认为它可能在这个问题上对我有所帮助,但无法如我所愿。

4

2 回答 2

8

Karl Shifflett(Microsoft 模式和实践团队)制作了一个视频,他在其中介绍了 Event Aggregator 模式并解释了他如何在他的 Stuff WPF/MVVM 应用程序中使用它。他的博客条目有更多关于他的项目的信息,源代码也可供下载。在我学习的过程中,我发现他的示例应用程序和视频非常有帮助。

于 2012-02-12T18:02:11.183 回答
7

查看这篇关于使用 Rx 的简单事件聚合器的帖子: 带有响应式扩展的事件聚合器

于 2010-08-09T01:49:48.210 回答