CSharp examples for Custom Type:Attribute
Create your own attribute and use reflection to read metadata in the Rectangle class
using System; using System.Reflection; [AttributeUsage(AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)] public class CodeTester : System.Attribute { private int bugNo; private string developer; private string lastReview; public string message; public CodeTester(int bg, string dev, string d) { this.bugNo = bg; this.developer = dev; this.lastReview = d; } public int BugNo { get { return bugNo; } } public string Developer { get { return developer; } } public string LastReview { get { return lastReview; } } public string Message { get { return message; } set { message = value; } } } [CodeTester(45, "Z", "12/8/2020", Message = "test")] [CodeTester(49, "N", "10/10/2020", Message = "test 1")] class Rectangle { protected double length; protected double width; public Rectangle(double l, double w) { length = l; width = w; } [CodeTester(55, "A", "19/10/2020", Message = "test")] public double GetArea() { return length * width; } [CodeTester(56, "Z", "19/10/2020")] public void Display() { Console.WriteLine("Length: {0}", length); Console.WriteLine("Width: {0}", width); Console.WriteLine("Area: {0}", GetArea()); } } class ExecuteRectangle { static void Main(string[] args) { Rectangle r = new Rectangle(4.5, 7.5); r.Display(); Type type = typeof(Rectangle); foreach (Object attributes in type.GetCustomAttributes(false)) { CodeTester dbi = (CodeTester)attributes; if (null != dbi) { Console.WriteLine("Bug no: {0}", dbi.BugNo); Console.WriteLine("Developer: {0}", dbi.Developer); Console.WriteLine("Last Reviewed: {0}", dbi.LastReview); Console.WriteLine("Remarks: {0}", dbi.Message); } } foreach (MethodInfo m in type.GetMethods()) { foreach (Attribute a in m.GetCustomAttributes(true)) { CodeTester dbi = (CodeTester)a; if (null != dbi) { Console.WriteLine("Bug no: {0}, for Method: {1}", dbi.BugNo, m.Name); Console.WriteLine("Developer: {0}", dbi.Developer); Console.WriteLine("Last Reviewed: {0}", dbi.LastReview); Console.WriteLine("Remarks: {0}", dbi.Message); } } } } }