注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

C#根据反射操作属性  

2015-12-17 17:04:55|  分类: C# & .NET |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
关于反射,真是一个神奇的功能,今天再次编写一个小程序体验了一下。
1. 获取一个类中的所有属性
首先需要获取一个类型(Type)实例,而不是一个类,这可以有两个方法,一个是使用某个类的实例的GetType方法,另一个则是使用typeof关键字。
获取类型之后,使用反射获取类型的属性信息,然后可列举所有的属性。
样例代码如下:
private void ListProperties()
{
    Type t = (new Color()).GetType();
    foreach (PropertyInfo pi in t.GetProperties())
    {
        if(pi.PropertyType==typeof(Color))
            cb_Colors.Items.Add(pi.Name);
    }
    cb_Colors.Sorted = true;
}
这个就可以获取所关心的类型的属性了。
2. 接下来是通过属性名称获取属性值。
private void cb_Colors_SelectedIndexChanged(object sender, EventArgs e)
{
    Color c=new Color();
    Type t = c.GetType();
     
    PropertyInfo pi = t.GetProperty(cb_Colors.Text);
    Color sc = (Color)pi.GetValue(c, null);
    pb_Demo.BackColor = sc;
}
小程序界面如下:
C根据反射操作属性 - Lemniscate - 信息,灵感,创新
 动图:
C根据反射操作属性 - Lemniscate - 信息,灵感,创新
 
  评论这张
 
阅读(212)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016