我正在考虑使用规范模式进行验证。很难的是如何告诉用户为什么一些规范不满足。如果Specification.IsSatisfiedBy()不仅返回bool值,还会导致失败,该怎么办?它看起来像这样:
interface ISpecification<T> { CheckResult IsSatisfiedBy(T candidate); }
CheckResult是:
class CheckResult { public bool IsSatisfied { get; } public string FailureReason { get; } }
在Fowler & Evans工作中,有一个部分满意的规范的概念,其目的是提供什么是不满意的。然而,在该文档中,它被实现为附加的方法remainingUnsatisfiedBy,它返回由候选者未完成的规范。
所以问题是:当使用规范进行验证时,如何向用户提供给定规格不满意的反馈?上面提到的解决方案好吗?
虽然您可以使用规范类进行验证,但我建议您将其作为您域内的单独概念。您可能会发现,您需要重新使用相同的底层规范,但需要根据目的和上下文返回不同的“失败原因”。详见
this article。
上面引用的帖子的作者也亲切地分享了github的代码,并将代码发布为NCommon。特别审查这些领域:
规格:https://github.com/riteshrao/ncommon/tree/v1.2/NCommon/src/Specifications
验证:https://github.com/riteshrao/ncommon/tree/v1.2/NCommon/src/Rules(特别是ValidationResult和ValidationError的类)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。