c# - 试图理解事件聚合器模式

标签 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第一篇文章太大,无法让我理解模式,第二篇文章未完成:)。
顺便说一句,我创建了我的类(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()
    {

    }
}

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

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

注意我检查了 Generic Delegates topic并认为它可以帮助我解决这个问题,但无法如我所愿。

最佳答案

Karl Shifflett(Microsoft 模式和实践团队)做了一个 video他介绍了事件聚合器模式并解释了他如何在他的 Stuff WPF/MVVM 应用程序中使用它。他的blog entry有更多关于他的项目的信息,源代码也可以下载。我发现他的示例应用程序和视频对我的学习非常有帮助。

关于c# - 试图理解事件聚合器模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3436853/

相关文章:

javascript - 如何正确地将循环中的参数传递给多个事件处理程序?

javascript - JS : Why is the Event object accessible in event handlers without accepting it in a parameter?

design-patterns - Python 设计模式,交叉导入

c# - 使用 Unity 链接 C++ 头文件和 lib 文件

c# - Linq to Join tables 基于两者之间的日期

javascript - 同一按钮上的连续 onclick 事件触发单独的脚本

c++ - 将 NSNotificationCenter 设计模式移动到 C++ 进行移植?

C# 状态模式和事件

c# - 自定义多线程循环

c# - 是什么让 Java 编译器如此之快?