服务器之家

服务器之家 > 正文

C#反射(Reflection)对类的属性get或set值实现思路

时间:2019-10-30 15:56     来源/作者:C#教程网

近段时间,有朋友叫Insus了解一下反射(Reflection)方面的知识,反射提供了封装程序集、模块和类型的对象(Type类型)。可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。如果代码中使用了属性,可以利用反射对它们进行访问。 
下面的例子,是Insus练习对一个类别的属性进行set和get值。 

首先写一个类,再写一个可读写的属性: 

复制代码代码如下:


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
/// <summary> 
/// Summary description for Member 
/// </summary> 
namespace Insus.NET 

public class Member 

private string _Name; 
public string Name 

get 

return _Name; 

set 

_Name = value; 


public Member() 

// 
// TODO: Add constructor logic here 
// 



Insus.NET一向是写asp.net程序,练习也是在站点进行。 
创建一个网页,引用两个namespace: 

复制代码代码如下:


using Insus.NET; 
using System.Reflection; 


读写属性: 

复制代码代码如下:


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using Insus.NET; 
using System.Reflection; 
public partial class _Default : System.Web.UI.Page 

protected void Page_Load(object sender, EventArgs e) 

//实例化类 
Member objMember = new Member(); 
//对属性set值 
PropertyInfo pi = objMember.GetType().GetProperty("Name", BindingFlags.Public | BindingFlags.Instance); 
if (null != pi && pi.CanWrite) 

pi.SetValue(objMember, "Insus.NET", null); 

//对属性get值 
PropertyInfo pii = objMember.GetType().GetProperty("Name", BindingFlags.Public | BindingFlags.Instance); 
if (null != pii && pi.CanRead) 

object obj_Name = pii.GetValue(objMember, null); 
Response.Write(obj_Name.ToString()); 


标签:

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字 2019-06-05
返回顶部