イベントアグリゲーターパターンを簡単な方法で実装して、段階的に学習しようとしています。しかし、その実装について説明している本や素晴らしいビデオチュートリアルは見つかりませんでした。この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最初の記事は大きすぎてパターンを理解できず、2番目の記事は完成していません:)。
ちなみに私はクラスを作成しました:
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トピックを確認し、この問題で役立つかもしれないと思ったが、思ったとおりに作成できなかったことに注意してください。