考虑以下代码:
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
)的背景下。
我应该在哪里收集/处理消息?
谢谢!
答案 0 :(得分:1)
如果您的反馈配额是不变量(业务规则),那么异常就可以了。
您始终可以添加以下方法:
public bool CanAddFeedback
{
get { return this.Feedbacks.Count < quota; }
}
在添加之前检查是否允许反馈,以便您可以返回有意义/用户友好的消息。
您可以根据包含剩余配额的反馈添加域名事件等。