2

検証属性で装飾されたプロパティを持つオブジェクトがあります。検証は正しく機能していますが、これらの属性に基づいて文字列操作を実行する追加のメソッドが必要です。

次のオブジェクトを検討してください。

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;

            }               
        }
    }

「長さ」の値が 54 ではなく null として表示されます。値を取得するにはどうすればよいですか? うまくいけば、これは理にかなっています、ありがとう。

4

3 に答える 3