Mega Code Archive

 
Categories / C# / Language Basics
 

Use a property as a named attribute parameter

/* C#: The Complete Reference  by Herbert Schildt  Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852 */ // Use a property as a named attribute parameter.     using System;   using System.Reflection;     [AttributeUsage(AttributeTargets.All)]  class RemarkAttribute : Attribute {    string remarkValue; // underlies remark property      int pri_priority; // underlies priority property      public string supplement; // this is a named parameter      public RemarkAttribute(string comment) {      remarkValue = comment;      supplement = "None";    }      public string remark {      get {        return remarkValue;      }    }      // Use a property as a named parameter.    public int priority {      get {        return pri_priority;      }      set {        pri_priority = value;      }    }  }     [RemarkAttribute("This class uses an attribute.",                   supplement = "This is additional info.",                   priority = 10)]  class UseAttrib {    // ...  }    public class NamedParamDemo11 {     public static void Main() {       Type t = typeof(UseAttrib);        Console.Write("Attributes in " + t.Name + ": ");        object[] attribs = t.GetCustomAttributes(false);       foreach(object o in attribs) {        Console.WriteLine(o);      }        // Retrieve the RemarkAttribute.      Type tRemAtt = typeof(RemarkAttribute);      RemarkAttribute ra = (RemarkAttribute)            Attribute.GetCustomAttribute(t, tRemAtt);        Console.Write("Remark: ");      Console.WriteLine(ra.remark);        Console.Write("Supplement: ");      Console.WriteLine(ra.supplement);        Console.WriteLine("Priority: " + ra.priority);    }   }