1

問題:ユーザーがドメイン内のあるエンティティを操作している。最後のものは、ユーザーe-mail notificationsが指定された時間まで繰り返し受信するように(smtpサーバーを使用して)ステータスを変更します。
だから私はどういうわけかイベントを発生させる必要があります。

それを行うための代替方法は何ですか?フレームワークにはイベントがないことを私は知っていますASP.NET MVC

ありがとう!

4

1 に答える 1

1

インプロセスドメインイベントのサポートが組み込まれている制御の反転コンテナを使用できます。

購読する

購読は簡単です。単純に、任意のクラスにIHandlerOfを実装させます。

[Component]
public class ReplyEmailNotification : IHandlerOf<ReplyPosted>
{
    ISmtpClient _client;
    IUserQueries _userQueries;

    public ReplyEmailNotification(ISmtpClient client, IUserQueries userQueries)
    {
        _client = client;
        _userQueries = userQueries;
    }

    public void Invoke(ReplyPosted e)
    {
        var user = _userQueries.Get(e.PosterId);
        _client.Send(new MailMessage(user.Email, "bla bla"));
    }
} 

発送

ドメインイベントは、DomainEventクラスを使用してディスパッチされます。実際のドメインイベントは任意のクラスにすることができ、制限はありません。ただし、それらをDTOとして扱うことをお勧めします。

public class UserCreated
{
    public UserCreated(string id, string displayName)
    {
    }
}

public class UserService
{
    public void Create(string displayName)
    {
        //create user
        // [...]

        // fire the event.
        DomainEvent.Publish(new UserCreated(user.Id, user.DisplayName));
    }
}

コードは私の記事からのものです:http://www.codeproject.com/Articles/440665/Having-fun-with-Griffin-Container

ASP.NET MVC3のインストール:

  1. パッケージマネージャーコンソールを使用します。install-package griffin.container.mvc3
  2. 次の手順に従ってください:http://griffinframework.net/docs/container/mvc3/
于 2012-08-27T08:56:29.687 に答える