相关疑难解决方法(0)

DDD使用规范模式进行验证

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

interface ISpecification<T>
{
  CheckResult IsSatisfiedBy(T candidate);
}
Run Code Online (Sandbox Code Playgroud)

在哪里CheckResult:

class CheckResult
{
  public bool IsSatisfied { get; }
  public string FailureReason { get; }
}
Run Code Online (Sandbox Code Playgroud)

Fowler&Evans的工作中,有一个部分满足规范的概念,其目的是提供解释究竟不满足的内容.但是在该文档中,它被实现为附加方法remainderUnsatisfiedBy,它返回候选者未完成的规范.

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

domain-driven-design

22
推荐指数
2
解决办法
1万
查看次数

针对JSON Schema C#验证JSON

有没有办法根据该结构的JSON模式验证JSON结构?我看了,发现JSON.Net验证,但这不符合我的要求.

JSON.net做:

JsonSchema schema = JsonSchema.Parse(@"{
  'type': 'object',
  'properties': {
    'name': {'type':'string'},
    'hobbies': {'type': 'array'}
  }
}");

JObject person = JObject.Parse(@"{
  'name': 'James',
  'hobbies': ['.NET', 'LOLCATS']
}");

bool valid = person.IsValid(schema);
// true
Run Code Online (Sandbox Code Playgroud)

这证实为真.

JsonSchema schema = JsonSchema.Parse(@"{
  'type': 'object',
  'properties': {
    'name': {'type':'string'},
    'hobbies': {'type': 'array'}
  }
}");

JObject person = JObject.Parse(@"{
  'surname': 2,
  'hobbies': ['.NET', 'LOLCATS']
}");

bool valid = person.IsValid(schema);
Run Code Online (Sandbox Code Playgroud)

这也证实了这一点

JsonSchema schema = JsonSchema.Parse(@"{
  'type': 'object',
  'properties': {
    'name': {'type':'string'},
    'hobbies': {'type': 'array'}
  }
}"); …
Run Code Online (Sandbox Code Playgroud)

c# validation json jsonschema

16
推荐指数
1
解决办法
3万
查看次数

标签 统计

c# ×1

domain-driven-design ×1

json ×1

jsonschema ×1

validation ×1