加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

C#反射 Reflection 对类的属性get或set值达成思路

发布时间:2023-03-25 13:08:19 所属栏目:语言 来源:
导读:近段时间,有朋友叫Insus了解一下反射(Reflection)方面的知识,反射提供了封装程序集、模块和类型的对象(Type类型)。可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问

近段时间,有朋友叫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());

}

}

}

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!