我正在尝试以一种简单的方式实现事件聚合器模式,以便逐步学习它。但我没有找到任何关于它的实施的书或好的视频教程 我刚刚发现了一些好文章,例如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()
方法时使用。
我希望它是通用的,因为稍后会有更多的服务,比如RateService,QuestionService,....每个服务都会在MemberService类中有一个XXXSubmited()
方法。
希望你明白我想要学习的东西,问我是否要让我更清楚。
注意我检查了Generic Delegates topic,并认为它可以帮助我解决这个问题,但是无法按照我想要的那样做。
答案 0 :(得分:6)
答案 1 :(得分:6)
Karl Shifflett(微软模式和实践团队)制作了一个video,他在其中介绍了Event Aggregator模式并解释了他如何在他的Stuff WPF / MVVM应用程序中使用它。他的blog entry更多关于他的项目,源代码也可以下载。我发现他的示例应用程序和视频在我学习时非常有用。