加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

反射式类属性获取或设置实现 C#反射式类的特性实现思路

发布时间:2023-02-28 14:33:58 所属栏目:语言 来源:
导读:近段时间,有朋友叫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());
 
}
 
}
 
}
 
 

(编辑:聊城站长网)

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