検証のために仕様パターンを使用することを考えています。難しいのは、仕様を満たさなかった理由をユーザーに伝える方法です。 Specification.IsSatisfiedBy()
がbool
の値だけでなく、失敗の理由も返す場合はどうなりますか? Fowler & Evans仕事でDDD検証のための仕様パターンの使用
class CheckResult
{
public bool IsSatisfied { get; }
public string FailureReason { get; }
}
目的を正確に満足していなかったものを説明を提供することである部分的に満足仕様の概念があります:CheckResult
がある
interface ISpecification<T>
{
CheckResult IsSatisfiedBy(T candidate);
}
:それは次のようになります。しかし、その文書では、追加メソッドremainderUnsatisfiedByによって実装されています。これは、候補者によって実行されなかった仕様を返します。。
質問:検証の目的で仕様を使用する場合、指定された仕様が満たされていないというフィードバックをユーザーに提供する方法を教えてください。私が上に提示した解決策は良いですか?
まず、仕様が正しいと思いますか?つまり、各仕様は、モデルが有効か無効かのコンテキストを知っていますか?私はドメインがどのように見えるかわからないので、あまり言い表せません。 いくつかの簡単な検証では、大丈夫だと思いますが、それはDataAnnotationの検証属性が現在行っていることです。 – MikeSW