Using System; using System. reflection; namespace ValidateAgeAttr {class ValidateAgeAttribute: Attribute {public ValidateAgeAttribute () {} public ValidateAgeAttribute (int maxAge, string validateResult) {MaxAge = maxAge; ValidateResult = validateResult ;} /// <summary> /// maximum age allowed /// </summary> public int MaxAge {get; set ;} /// <summary> /// verification result /// </summary> public string ValidateResult {get; set;} public void Validate (int age) {if (age> MaxAge) {ValidateResult = string. format ("unable to pass verification: age ({0})> MaxAge ({1})", age, MaxAge);} else if (age <= MaxAge) {ValidateResult = string. format ("verified: age ({0}) <= MaxAge ({1})", age, MaxAge) ;}} class Person {public string Name {get; set ;}// [ValidateAge (MaxAge = 40)] [ValidateAge (50, "")] public int Age {get; set ;}} class Program {static void Main () {var person = new Person {Name = "TT", Age = 20}; Type type = person. getType (); PropertyInfo propertyInfo = type. getProperty ("Age"); var validateAgeAttribute = (ValidateAgeAttribute) Attribute. getCustomAttribute (propertyInfo, typeof (ValidateAgeAttribute); Console. writeLine ("maximum age allowed:" + validateAgeAttribute. maxAge); validateAgeAttribute. validate (person. age); Console. writeLine (validateAgeAttribute. validateResult); Console. readKey ();}}}