19

イベントアグリゲーターパターンを簡単な方法で実装して、段階的に学習しようとしています。しかし、その実装について説明している本や素晴らしいビデオチュートリアルは見つかりませんでした。このhttp://weblogs.asp.net/rashid/archive/2009/03/05/use-event-aggregator-to-make-your-application-more-extensible.aspxhttp
などの良い記事を見つけました。 ://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トピックを確認し、この問題で役立つかもしれないと思ったが、思ったとおりに作成できなかったことに注意してください。

4

2 に答える 2

8

Karl Shifflett(Microsoftパターンおよびプラクティスチーム)は、イベントアグリゲーターパターンをウォークスルーし、Stuff WPF/MVVMアプリケーションでどのように使用したかを説明するビデオを作成しました。彼のブログエントリには彼のプロジェクトに関する詳細があり、ソースコードもダウンロードできます。私が学んでいる間、彼のサンプルアプリケーションとビデオは本当に役に立ちました。

于 2012-02-12T18:02:11.183 に答える
7

Rxを使用した単純なイベントアグリゲーターに関するこの投稿をチェックしてください: リアクティブエクステンションを備えたイベントアグリゲーター

于 2010-08-09T01:49:48.210 に答える