c# 利用反射获取属性名和值

class A
{
 public string Property1{get;set;}
 public int Property2{get;set;}
}

class B
{
 public string Property1{get;set;}
 public A Property2{get;set;}
}

请问如何通过反射获取class B 的Property2属性(也就是class A)的 属性名和值?

 

 

using System;

 

using System.Collections.Generic;

 

using System.ComponentModel;

 

using System.Data;

 

using System.Drawing;

 

using System.Text;

 

using System.Windows.Forms;

 

using System.Reflection;

 

namespace WindowsApplication26

 

{

 

    public partial class Form1 : Form

 

    {

 

 

 

        class A

 

        {

 

            public string Property1 { get return "Property1"; } }

 

            public int Property2 { get return 1; } }

 

        }

 

 

 

        class B

 

        {

 

            private A property2=new A();

 

            public string Property1 { get return "Property1"; } }

 

            public A Property2 { get return property2; } }

 

        

 

 

 

 

 

        public Form1()

 

        {

 

            InitializeComponent();

 

        }

 

 

 

        private void Form1_Load(object sender, EventArgs e)

 

        {

 

 

 

            B b = new B();

 

 

 

            

 

            foreach (PropertyInfo info in b.GetType().GetProperty("Property2").GetValue(b, null).GetType().GetProperties()) 

 

            {

 

                MessageBox.Show(string.Format("{0}={1}",info.Name,info.GetValue(b.Property2,null)));

 

            }

 

             

 

 

 

        }

 

    }

 

}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
namespace WindowsApplication26
{
    public partial class Form1 : Form
    {
 
        class A
        {
            public string Property1 { get return "Property1"; } }
            public int Property2 { get return 1; } }
        }
 
        class B
        {
            private A property2=new A();
            public string Property1 { get return "Property1"; } }
            public A Property2 { get return property2; } }
        
 
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
            B b = new B();
 
            
            foreach (PropertyInfo info in b.GetType().GetProperty("Property2").GetValue(b, null).GetType().GetProperties()) 
            {
                MessageBox.Show(string.Format("{0}={1}",info.Name,info.GetValue(b.Property2,null)));
            }
             
 
        }
    }
}

 

posted on 2013-11-25 20:37  黑夜寻梦  阅读(432)  评论(0编辑  收藏  举报