[英]Validation multiple properties required one
我正在寻找更好的方法来解决以下情况。 我现在不想使用反射,而是将逻辑提升到第 n 级。 代码应该是简单的 C# 没有属性验证。 因为这是后端代码验证。 我很想解决这个问题,比如 XOR 或类似的运算符。
设想:
我在 class 中有三个字段(可以是 4、5、nth)。 三个用户中的一个必须 select 只有一个字段。 如果没有,则选择了两个或更多字段,我们需要抛出异常。
代码:
// no type defined for item
if ( hasUserId==false
&& hasSigningGroup==false
&& hasAssignedAgent == false)
{
throw new Exception("No type defined for item.");
}
else
{
if ((hasSigningGroup && hasUserId)|| (hasSigningGroup && hasAssignedAgent)|| (hasUserId && hasAssignedAgent))
{
throw new Exception("User ID , Signing group or assigned agent. Only one property can be set.");
}
}
“ ^ 运算符计算其操作数的逻辑异或,也称为逻辑 XOR。如果 x 计算结果为真且 y 计算结果为假,或者 x 计算结果为假且 y 计算结果为真,则 x ^ y 的结果为真. 否则,结果为假。也就是说,对于 bool 操作数,^ 运算符计算与不等运算符相同的结果。=。
你也可以使用.=。
我相信这就是您正在寻找的。
编辑:由于逻辑缺陷而删除了代码示例。 答案仍然是 ^ or.= 作为 XOR 运算符。
伙计们,我找到了解决这个问题的简单方法。这适用于所有情况。 XOR 和.= 运算符都不起作用。
int result = Convert.ToInt32(hasUserId) + Convert.ToInt32(hasSigningGroup) + Convert.ToInt32(hasAssignedAgent);
if (result != 1)
{
throw new Exception("User ID , Signing group or assigned agent. Please set one property.");
}
谢谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.