【发布时间】:2021-06-21 08:25:04
【问题描述】:
我正在为一个类实现一个验证器而苦苦挣扎,其中应该只设置一个属性。
假设我们有以下类:
public class SomeClass
{
public DateTime SomeDate {get; set;}
public IEnumerable<int> FirstOptionalProperty {get; set;}
public IEnumerable<int> SecondOptionalProperty {get; set;}
public IEnumerable<int> ThirdOptionalProperty {get; set;}
}
这个类有一个强制属性 - SomeDate。其他属性是可选的,只能设置一个,例如如果设置了FirstOptionalProperty - SecondOptionalProperty 和ThirdOptionalProperty 应该为空,如果设置了SecondOptionalProperty - FirstOptionalProperty 和ThirdOptionalProperty 应该为空等等。
换句话说:如果设置了 IEnumerable 属性之一 - 其他 IEnumerables 应该为空。
关于为这种类型的类实现验证器的任何提示/想法?我想出的唯一办法就是编写大块的When 规则,但是这种编写代码的方式容易出错,而且结果看起来很丑。
【问题讨论】:
-
所以基本上可以归结为
NotBeNull只允许 3 个可选属性中的 1 个?我没听错吗? -
@MongZhu 如果设置了这些属性之一 - 其他属性应该为空
标签: c# fluentvalidation