gpt4 book ai didi

domain-driven-design - DDD 使用规范模式进行验证

转载 作者:行者123 更新时间:2023-12-03 11:41:34 24 4
gpt4 key购买 nike

我正在考虑使用规范模式进行验证。难的是如何告诉用户为什么某些规范不满足。如果Specification.IsSatisfiedBy()怎么办不仅会返回 bool值(value),也是失败的原因。它看起来像这样:

interface ISpecification<T>
{
CheckResult IsSatisfiedBy(T candidate);
}

哪里 CheckResult是:
class CheckResult
{
public bool IsSatisfied { get; }
public string FailureReason { get; }
}

Fowler & Evans工作中有一个部分满足规范的概念,其目的是提供解释究竟是什么不满足。然而,在该文档中,它作为附加方法来实现的,remallUnsatisfiedBy,它返回未由候选者完成的规范。

所以问题是:当使用规范进行验证时,如何向用户提供不满足给定规范的反馈?我上面提出的解决方案好吗?

最佳答案

尽管您可以使用您的规范类进行验证,但我建议您将它们作为单独的概念保留在您的域中。您可能会发现需要重复使用相同的底层规范,但需要根据目的和上下文返回不同的“失败原因”。见 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 的类)

关于domain-driven-design - DDD 使用规范模式进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9655171/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com