gpt4 book ai didi

asp.net-mvc - 是否可以在 IValidatableObject 方法中以强类型方式指定字段名称?

转载 作者:行者123 更新时间:2023-12-01 11:48:27 25 4
gpt4 key购买 nike

在这种情况下是否可以使用某种强类型方式(lambda?)指定字段名称:

public class Demo : IValidatableObject
{
public string DemoField {get; set;}

IEnumerable<ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
{
if (<...>)
{
yield return new ValidationResult("Some validation message", new string[] { "DemoField" }); // <-- Here
}
}

}

例如,当在字符串中指定字段名称时,它不能被重构。

最佳答案

我不知道有任何“内置”方式。但是您可以使用 LINQ 表达式来执行如下操作:

Expression<Func<Demo, string>> lambda = (Demo d) => d.DemoField;
string demoFieldName = ((System.Linq.Expressions.MemberExpression)lambda.Body).Member.Name;
yield return new ValidationResult("Some validation message", new string[] { demoFieldName });

这样您就没有硬编码的字符串,并且重构会起作用。

关于asp.net-mvc - 是否可以在 IValidatableObject 方法中以强类型方式指定字段名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13747989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com