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

发布时间:2022-04-16 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了C#反射(Reflection)对类的属性get或set值实现思路脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
近段时间,有朋友叫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 &amp;& pi.CanRead)
{
object obj_Name = pii.GetValue(objMember, null);
Response.Write(obj_Name.ToString());
}
}
}

脚本宝典总结

以上是脚本宝典为你收集整理的C#反射(Reflection)对类的属性get或set值实现思路全部内容,希望文章能够帮你解决C#反射(Reflection)对类的属性get或set值实现思路所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。