当然可以如下:
Type t = this.GetType();
MethodInfo mii = t.GetProperty("a").GetGetMethod();
Console.WriteLine(mii.Invoke(this,null));

解决方案 »

  1.   

    利用反射。
    static void Main(string[] args)
    {
    MoneyHome.Class.DataOperate d = new MoneyHome.Class.DataOperate();//实例
    Type t = d.GetType();
    MessageBox.Show(t.Namespace,"DataOperate类的命名空间");
    MessageBox.Show(t.IsClass.ToString(),"DataOperae是不是一个类");
    MemberInfo[] m = t.GetMembers();
    StringBuilder st = new StringBuilder(800);
    foreach(MemberInfo m1 in m)
    {
    st.Append("Members:  ");
    st.Append(m1.ToString());
    st.Append("\n");
    }
      

  2.   

    所有的属性你可以做一个foreach
    同样的道理,你可以通过 t.GetProperty("xxx").GetSetMethod()来设置值
      

  3.   

    Type type = this.GetType(); PropertyInfo [] pInfos = type.GetProperties(); foreach ( PropertyInfo pInfo in pInfos )
    {
      

  4.   

    //接上面
    Console.WriteLine( pInfo.Name );
    }
      

  5.   

    接楼上,pInfo.GetValue(this,null)//这就是属性的值
      

  6.   

    发现不明确的匹配。 
    异常详细信息: System.Reflection.AmbiguousMatchException: 发现不明确的匹配。
    源错误: 
    Type t = pdt.GetType();
    PropertyInfo[] arrpf= t.GetProperties();
    foreach(PropertyInfo pf in arrpf)
    {
     MethodInfo mf = t.GetProperty(pf.Name).GetGetMethod(); <------------------在这错
     object objx = mf.Invoke(pdt,null);
    }
     
      

  7.   

    Type t = this.GetType();
    PropertyInfo[] arrpf= t.GetProperties();
    foreach(PropertyInfo p in arrpf)
    {
    MethodInfo mii = t.GetProperty(p.Name).GetGetMethod();
    Console.WriteLine(mii.Invoke(this,null));
    }
    我这里没有问题
      

  8.   

    当然,你可以直接用
    Type t = this.GetType();
    PropertyInfo[] arrpf= t.GetProperties();
    foreach(PropertyInfo p in arrpf)
    {
    // MethodInfo mii = t.GetProperty(p.Name).GetGetMethod();
    // Console.WriteLine(mii.Invoke(this,null));
    Console.WriteLine(p.GetValue(this,null).ToString());
    }
      

  9.   

    要保证你的属性确实有get这个方法