目前有个比较BT的想法。
提取类的属性名,不用反射机制,因为反射机制不能满足我的需求。反射必须要输入属性名或者属性的Index。
为了避免书写错误,不要手动输入属性名。因为不知道类里面一共有多少个属性,所以不能用Index获取属性名。例如:
class A{
  private string _aName;
  private int _aAge;
  private string _aClass;  public string aName{
    get{
       ...
    }
    set{
       ...
    }
  }
  public int aAge{
    get{
       ...
    }
    set{
       ...
    }
  }
  public string aClass{
    get{
       ...
    }
    set{
       ...
    }
  }
}我想到的办法:
1)A a = new A();   然后我可以用类似a.aName.GetName()或者a.aName.Name获取类型为string的"aName"字符串。(被自己给否了)
2)创建一个对象,根据A来动态产生一个枚举,枚举内容为A里面的所有属性,然后根据反射后的PropertyInfo获取属性名。(但是动态产生一个枚举这里不知道怎么实现了。)只有以上两个想法。但是都有问题,还请各位牛人帮忙想一下思路。谢谢了。

解决方案 »

  1.   

    反射必须要输入属性名或者属性的Index。
    为了避免书写错误,不要手动输入属性名
    为什么会有书写错误?
    属性名你完全可以一次性全部拿到,然后列出来让用户选择即可,根本不存在出错的问题.            PropertyInfo[] allProps = typeof(A).GetProperties();
                foreach (PropertyInfo pi in allProps)
                {
                    Console.WriteLine(pi.Name);
                    //pi.SetValue()
                    //pi.GetValue()
                }
      

  2.   


    我也到这里了,我想用pi.Name创建一个枚举,但是不知道怎么做:(
      

  3.   

    只能说楼主对反射一窍不通! 而且对Java的运行机制也不怎么理解!
      

  4.   


    8楼提到的两个问题我的确存在。
    9楼的朋友不用激动,Java和C#我看都一个样。 JSP也搞过ASP.NET也搞过所以   唉~~灰常无语的说
    还是帮忙解决一下问题吧各位,谢谢了。
      

  5.   

    参考一下这个。CreateDelegate
    http://topic.csdn.net/u/20100901/10/55c130a2-10da-493b-ae0b-cdc903d2cc08.html
      

  6.   


    只能说楼主对反射一窍不通! 而且对Python的运行机制也不怎么理解!