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

}

}

}
您可能感兴趣的文章:

  • C# 反射(Reflection)的用处分析
  • 关于C#反射 你需要知道的
  • C#基于Linq和反射实现数据持久化框架Xml4DB详解
  • 详解C# 反射(Reflection)
声明:本站(华域联盟www.cnhackhy.com)所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。