我正在尝试以一种简单的方法来实现事件聚合器模式,以逐步学习它。但是我没有找到任何有关它的实现的书或视频教程。
我刚刚发现了一些不错的文章,例如http://weblogs.asp.net/rashid/archive/2009/03/05/use-event-aggregator-to-make-your-application-more-extensible.aspxhttp://martinfowler.com/eaaDev/EventAggregator.html,第一篇文章太大了,无法理解模式,第二篇文章还没有完成:)。
顺便说一下,我创建了我的类(class):

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()
    {

    }
}

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

希望你理解我想学的东西,问我是否要我让事情变得更清楚。

请注意,我检查了Generic Delegates topic并认为它可以在此问题上对我有所帮助,但无法按我的意愿进行。

最佳答案

在使用Rx的简单事件聚合器上查看此帖子:Event Aggregator with Reactive Extensions

07-27 15:15