我写了个方法,操作类的时候并没有错。但是后来继续用这个方法,操作一个类时出问题了。类名:User
属性:包含几个public static short属性
      和private int userid; //ID        public int Userid
        {
            get { return userid; }
            set { userid = value; }
        }
        private string loginname; //登录名        public string Loginname
        {
            get { return loginname; }
            set { loginname = value; }
        }
        private string password; //密码        public string Password
        {
            get { return password; }
            set { password = value; }
        }
        等等。。在调用我的反射方法 FieldInfo[] fields=t.GetFields(); 这一句时。 只得到了该类下public static short的属性。其他的都没有得到。。  
 求高手

解决方案 »

  1.   

    如果需要获得属性,用t.GetProperties();
      

  2.   

    GetFields,此方法用于从非托管代码访问托管类,不应从托管代码调用。帮助中写的很清楚
      

  3.   

    我在操作其他类的时候并没有问题。
    我查了一下GetProperties 是无序返回属性。。 
     我还没试,因为类型不一样,还要改循环代码。  
      请问GetProperties和GetFields 的区别是什么呢?
      

  4.   

    我对概念类的东西不太熟悉。 但是我用GetFields操作其他类都是可以的,从定义和调用方式上我也没觉得有多大不同。
      

  5.   

    GetFields 返回的是字段,GetProperties返回的是属性public class aa
    {
        public string ff;
        public string Text{get{return ff;}}
    }GetFields返回ff
    GetProperties返回Text很明白的了。还不明白看msdn。和有序无序无关。
      

  6.   

    GetFields获取的是声明为public的字段,GetProperty获取的是声明为public的属性,很清楚
      

  7.   

    这里明白了。但是我在操作另一个类的时候,用 GetFields也是没问题的。另一个类只有
    private int id; //ID        public int Id
            {
                get { return id; }
                set { id = value; }
            }
            private string code; //设备代码        public string Code
            {
                get { return code; }
                set { code = value; }
            }
            private string name; //设备名称        public string Name
            {
                get { return name; }
                set { name = value; }
            }
    为什么在操作这个类的时候没有错呢?
      

  8.   

    t.GetFields(BindingFlags.Public | BindingFlags.NonPublic);