比如自定义一个实体类  
public  userInfo  
{  
     [ColumnMap("userId")]  
     string  userID;  
       
     [ColumnMap("userId")]  
     string  userName;  

调用:
main
{
   userInfo  info=new userInfo();
}
如何在main函数中获取info.userId上标签的信息?

解决方案 »

  1.   

    [AttributeUsage(AttributeTargets.Property)]
    public class ColumnMap :Attribute
    {
    private string columnName; public ColumnMap(string columnName)
    {
    this.columnName = columnName;
    } public string ColumnName
    {
    get{return columnName;}
    set{columnName = value;}
    }
    }
      

  2.   

    通过Type的GetField获取FieldInfo,然后通过GetCustomAttributes获取相关的attribute.
    详细看MSDN
      

  3.   

    其实这些东西在MSDN都有的,以下就是MSDN的例子.
    习惯一下MSDN是个不错的东西.
    using System;
    using System.Reflection;// Define a custom attribute with one named parameter.
    [AttributeUsage(AttributeTargets.All)]
    public class MyAttribute : Attribute
    {
        private string myName;
        public MyAttribute(string name)
        {
            myName = name;
        }
        public string Name
        {
            get
            {
                return myName;
            }
        }
    }// Define a class that has the custom attribute associated with one of its members.
    public class MyClass1
    {
        [MyAttribute("This is an example attribute.")]
        public void MyMethod(int i)
        {
            return;
        }
    }public class MemberInfo_GetCustomAttributes
    {
        public static void Main()
        {
            try
            {
                // Get the type of MyClass1.
                Type myType = typeof(MyClass1);
                // Get the members associated with MyClass1.
                MemberInfo[] myMembers = myType.GetMembers();            // Display the attributes for each of the members of MyClass1.
                for(int i = 0; i < myMembers.Length; i++)
                {
                    Object[] myAttributes = myMembers[i].GetCustomAttributes(true);
                    if(myAttributes.Length > 0)
                    {
                        Console.WriteLine("\nThe attributes for the member {0} are: \n", myMembers[i]);
                        for(int j = 0; j < myAttributes.Length; j++)
                            Console.WriteLine("The type of the attribute is {0}.", myAttributes[j]);
                    }
                }
            }
            catch(Exception e)
            {
                Console.WriteLine("An exception occurred: {0}", e.Message);
            }
        }
    }
      

  4.   

    而且想通过引用info.userId来获取属性,不想通过传入"userId"之类的字符串来获取属性
      

  5.   

    这样使用其实和传入"userID"字符串获取属性是一样的,但是还是很感谢!