怎么得到类中的属性生成表的列

如何得到类中的属性生成表的列?
   private void button1_Click(object sender, EventArgs e)
        {
            A[] h;
            A G = new A();
            DataSet ds = new DataSet();
            getdata(out h);
            DataTable dt=new DataTable();
            //dt.Columns.Add("addr");
           // DataTable d;
            //foreach (A tr in h)
            //{
                
            //    dt.Rows.Add(tr);
            //}
            
            foreach (var item in typeof(A).GetFields())//得到值
            {
               // Console.WriteLine(item.GetValue(A , null));
                string values;
                values = item.GetValue(h[0]).ToString();//values的值就是0t,0name
               // colum = colum.Substring(1, colum.Length - 1); 
                
            }
           上面的代码只能得到addr,name的值,我想动态的获得列头
           动态的实际下面的动作
           dt.Columns.Add(变量);//dt.Columns.Add("addr")
         //即类中的addr,name
  或者有没有办法直接返回成dataset也可以
  


           
            
            ds.Tables.Add(dt);
             
        }
        private void   getdata(out A[] k)
        {
            A[] g = new A[10];
            for (int t = 0; t <10; t++)
            {
                g[t] = new A();
                g[t].addr = t.ToString() + "t";
                g[t].name = t.ToString() + "name";
            }
            k = g;

        }

  public class A
    {
        public string addr;
        public string name;
        public A()
        {

           
           
        }
        public string setaddr
        {
            set {addr = value;}
        }
        public string setname
        {
            set { name = value; }
        }

    }
------解决思路----------------------
拜托,把代码整理得清晰些。。。。。
 item.GetValue获得的是类的字段的值,如果你想获得字段名,用item.name就行,没记错的话。
dt.columns.add(item.name);