试图了解事件聚合器模式

Amr*_*rhy 15 c# events design-patterns eventaggregator

我试图以一种简单的方式实现事件聚合器模式,逐步学习它.但我没有找到任何书或好的视频教程谈论它的实现.
我刚刚发现了一些很好的文章,例如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()
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

我想要的是创建一个通用的方式,以便当一个新的注释创建CommentSubmited()Fire方法.
我希望它是通用的,因为稍后会有更多的服务,比如RateService,QuestionService,....每个服务都会XXXSubmited()在MemberService类中有一个方法.

希望你明白我想要学习什么,问我是否希望我更清楚.

注意我检查了Generic Delegates主题,并认为它可以帮助我解决这个问题,但无法按照我的意愿制作它.

Ric*_*ein 6

使用Rx:Event Aggregator with Reactive Extensions在一个简单的事件聚合器上查看这篇文章


Ken*_*ick 5

Karl Shifflett(微软模式和实践团队)制作了一个视频,他在其中介绍了Event Aggregator模式并解释了他如何在他的Stuff WPF/MVVM应用程序中使用它.他的博客文章更多地介绍了他的项目,源代码也可以下载.我发现他的示例应用程序和视频在我学习时非常有用.

  • 视频和博客网址不再有效 (4认同)