我有一个包含三个字段的DTO模型。
[Range(1, 100000)]
public Decimal? BonusRate { get; set; }
[Range(1, 100000)]
public Decimal? BonusGain { get; set; }
[Range(1, 100)]
public Decimal? BonusPercentage { get; set; }
在我的情况下,所有字段都是可选字段,但如果设置了一个字段,则其他字段也应设置。我做出了一个决定并且运作良好,但看起来有点笨拙。
IEnumerable<ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
{
if (BonusRate.HasValue || BonusGain.HasValue || BonusPercentage.HasValue)
if (!BonusRate.HasValue || !BonusGain.HasValue || !BonusPercentage.HasValue)
yield return new ValidationResult("message");
}
有人知道更好的方法吗?
答案 0 :(得分:0)
if (BonusRate.HasValue == BonusGain.HasValue && BonusGain.HasValue == BonusPercentage.HasValue)
或收集列表中的值并:
var isChecked = list.All(x => (x == list.First()));
答案 1 :(得分:0)
经过一些研究和建议,我找到了一个总体策略。 您是否可以自由使用外部包裹?
是强>
创建一个只读属性 private static void Main(string[] args)
{
var config =
new JobHostConfiguration("your connection string")
{
NameResolver = new QueueNameResolver()
};
var host = new JobHost(config);
host.RunAndBlock();
}
public static void NewBidsQueue([QueueTrigger(%queueKey%)] string message, TextWriter log)
{
log.WriteLine(message);
}
,如
IsGroupRequired
为小组public Boolean IsGroupRequired
{
get
{
return GroupItem1.HasValue == GroupItem2.HasValue
&& GroupItem2.HasValue == GroupItem3.HasValue
&& GroupItemNminus1.HasValue == GroupItemN.HasValue;
}
}
的每个属性分配[RequiredIfTrue("IsGroupRequired")]
否强>
GroupItem1..N
界面编写自己的验证方法
IValidatableObject