[Validation] include rules in the domain that may vary from instance to instance
Posted xiaowangzhi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Validation] include rules in the domain that may vary from instance to instance相关的知识,希望对你有一定的参考价值。
using System; using System.Collections.Generic; using System.Linq; namespace Validation // include rules in the domain that may vary from instance to instance { class Program { static void Main(string[] args) { var memberEoo = new Member { Name = "EooName", Area = "Eoo", Age = 15, Email = string.Empty }; // Eoo member must be at least 18 foreach (var item in memberEoo.Validate()) { Console.WriteLine(item); } var memberFoo = new Member { Name = "FooName", Area = "Foo", Age = 15, Email = string.Empty }; // Foo member must have an email foreach (var item in memberFoo.Validate()) { Console.WriteLine(item); } } } public class Member // domain model { private readonly List<string> _ruleItems = new List<string>(); // broken rules public string Name { get; set; } public string Area { get; set; } public int Age { get; set; } public string Email { get; set; } public List<string> Validate() { if (string.IsNullOrEmpty(Name)) { _ruleItems.Add("member must have a name"); } if (string.IsNullOrEmpty(Area)) { _ruleItems.Add("member must have an area"); } else { _ruleItems.AddRange(RuleFactory.GetRule(Area).GetRuleItems(this)); // specific rules } return _ruleItems; } } public abstract class Rule { public abstract string Area { get; } public abstract IEnumerable<string> GetRuleItems(Member member); } public class EooRule : Rule { public override string Area => "Eoo"; public override IEnumerable<string> GetRuleItems(Member member) { var ruleItems = new List<string>(); if (member.Age < 18) { ruleItems.Add("Eoo member must be at least 18"); } return ruleItems; } } public class FooRule : Rule { public override string Area => "Foo"; public override IEnumerable<string> GetRuleItems(Member member) { var ruleItems = new List<string>(); if (string.IsNullOrEmpty(member.Email)) { ruleItems.Add("Foo member must have an email"); } return ruleItems; } } public class RuleFactory { private static readonly List<Rule> _rules = new List<Rule> { new EooRule(), new FooRule() }; public static Rule GetRule(string area) { return _rules.FirstOrDefault(v => v.Area == area); } } }
以上是关于[Validation] include rules in the domain that may vary from instance to instance的主要内容,如果未能解决你的问题,请参考以下文章
错误:找不到模块'graphql/validation/rules/PossibleTypeExtensions'
无法从“node_modules/graphql/validation/index.js”解析“./rules/FieldsOnCorrectType”