我有一个对象,该对象的属性装饰有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

10-06 15:03