using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Reflection;using System.ComponentModel;namespace AttributeTest{ public class Program { static void Main(string[] args) { AttributeTest aT=new AttributeTest(); aT.FunAttributeTest(); FunAttributeTest(aT); Console.ReadLine(); } public static void FunAttributeTest(AttributeTest aT) { FieldInfo[] objFields = aT.GetType().GetFields(AttributeTest.bindingFlags); foreach (FieldInfo fi in objFields) { // Get the custom attributes if (fi.FieldType == typeof(string)) { fi.SetValue(aT, fi.GetValue(aT)+" and I'm modified out of my class."); Console.WriteLine("" + fi.GetValue(aT)); } Attribute[] attributes = System.Attribute.GetCustomAttributes(fi); foreach (Attribute attribute in attributes) { if (attribute is DescriptionAttribute) { DescriptionAttribute attributeT = attribute as DescriptionAttribute; Console.WriteLine("" + attributeT.Description); } } } } }
public class AttributeTest { public static BindingFlags bindingFlags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic; private string mPrivate = "I'm a private member."; public string mPublic = "I'm a private member."; [Description("Publisher of a given software inventory record")] private string publisher = "publisher"; [Description("Title of a given software inventory record")] private string title = "title"; [System.Xml.Serialization.XmlAttributeAttribute()] public string Publisher { get { return this.publisher; } set { this.publisher = value; } } public string Title { get { return this.title; } set { this.title = value; } } public void FunAttributeTest() { FieldInfo[] objFields = this.GetType().GetFields(bindingFlags); foreach (FieldInfo fi in objFields) { // Get the custom attributes if (fi.FieldType==typeof(string)) { Console.WriteLine(""+fi.GetValue(this)); } Attribute[] attributes = System.Attribute.GetCustomAttributes(fi); foreach (Attribute attribute in attributes) { if (attribute is DescriptionAttribute) { DescriptionAttribute attributeT = attribute as DescriptionAttribute; Console.WriteLine(""+attributeT.Description); } } } } }}