3

考虑以下代码:

public class Article : AbstractEntity<Article> {    

    // ...

    public void AppendFeedback(Feedback feedback) {
        var quota = this.FeedbacksQuota ?? this.DefaultFeedbacksQuota;            
        if(this.Feedbacks.Count >= quota) {
            throw new ApplicationException("message");
        }
        this.Feedbacks.Add(feedback);
    }

    // ...
}

所以我不知道当配额超过时我将如何通知用户。抛出异常对我来说似乎很糟糕。它是正确使用的地方domain events吗?(示例值得赞赏,尤其是在 的上下文中ASP.NET MVC application)。

我应该在哪里收集/处理消息?

谢谢!

4

1 回答 1

2

如果您的反馈配额是不变的(业务规则),那么例外是可以的。

您始终可以添加一个方法,例如:

public bool CanAddFeedback
{
    get { return this.Feedbacks.Count < quota; }
}

在添加之前检查是否允许反馈,以便您可以返回有意义/用户友好的消息。

可以根据添加的反馈引发域事件,其中包含剩余配额等。

于 2012-05-03T13:18:02.557 回答