c# - 从对象中读取验证属性

标签 c# validation reflection

我有一个对象,它的属性用 Validation 属性装饰。我的验证工作正常,但是我需要一个额外的方法来根据这些属性执行字符串操作。

考虑以下对象:

public class Pupil
{
    /// <summary>
    /// 
    /// </summary>
    public Pupil()
    {

    }

    [NotNullValidator]
    [StringLengthValidator(0, 54, MessageTemplate = "Invalid value '{0}' for {1}, Max length: {5}")]
    public string Name{ get; set; }

    [NotNullValidator]
    [StringLengthValidator(0, 2, MessageTemplate = "Invalid value '{0}' for {1}, Max length: {5}")]
    public string Gender{ get; set; }
}

我希望能够根据 StringLengthValidator 属性及其参数来操作“名称”。例如:

///Takes a Pupil object in
public static void DoManipulation(object value)
    {
        foreach(var property in value.GetType().GetProperties())
        {
            if(property.Name == "Name")
            {
                var att = property.GetCustomAttributes(typeof(StringLengthValidator), false);
                var length = ((StringLengthValidator)att[0]).UpperBound;

            }               
        }
    }

“length”的值出现为 null,而不是 54。如何获取该值? 希望这是有道理的,谢谢。

一个

最佳答案

这对我有用,你得到的 StringLengthValidator 属性是否与你认为的相同? (这是您的自定义类还是来自 Enterprise Lib 的类?

在我的例子中,我创建了一个自定义类 StringLengthValidator

enter image description here

关于c# - 从对象中读取验证属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12855143/

相关文章:

javascript - 使用 jquery 验证表单中的名称

database - 搜索数据库现有记录问题

c# - 为属性 setter 或 getter 创建一个高性能的开放委托(delegate)

c# - 单击通知图标时如何以编程方式显示上下文菜单?

c# - 模拟只读索引器属性

c# - FromsAuthenticationTicket.UserData 始终为空并且身份验证 cookie 不保留值

asp.net-mvc-3 - MVC 3 验证 : how to override DataAnnotations attribute in specific use cases?

c# - 从 OperationContract 方法返回图像(WCF 服务)

java - libgdx - 确定哪个平台正在运行

java - 如果参数注解存在则获取参数值