[反射] 一
目前我的理解
程序集:就是.dll .exe文件。
元数据:就是程序集里的类,枚举,等等。
一:先用VS2005建立一个类库
using System;
using System.Collections.Generic;
using System.Text;
namespace ClassLibrary1
{
public class Class1
{
}
public class Class2
{
}
public class Class3
{
}
}
编译后生成ClassLibrary1.dll
二:新建一个VS2005项目
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Reflection;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string strPath = @"G:\ClassLibrary1.dll";
Assembly myAssembly = Assembly.LoadFrom(strPath);
Type[] myTypes = myAssembly.GetTypes();
foreach (Type myType in myTypes)
{
if (myType.IsClass)
{
Label1.Text += myType.Name + "<br />";
}
}
}
}
三:效果如下
点击Button后
Class1
Class2
Class3
四:总结
到目前,我们已经成功的加载了某个程序集,在其包含的类型中进行迭代,并且显示了程序集中所有类的名字。
这里已经展示了使用反射跟程序集中的元数据打交道所用到的最基本的思路。该文章剩下来的部分将会深层次的向你展示反射中的类如何做更多的事情