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 )));
             }
             
 
         }
     }
}

 

转载于:https://www.cnblogs.com/caigen029/p/3442158.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值