程序集包括模块,模块又包含类型,类型包含成员,反射则提供了封装程序集,模块,类型的对象。可以使用反射动态创建程序集的实例,将类型绑定到现有对象上,或从现有对象中获取类型。可以调用类型的方法,字段和属性。
示例代码:
public void init_Ref()
{
Assembly ab = Assembly.LoadFrom(@"D:\my_project\MmyeeAd\BLL\bin\Debug\LTP.Common.dll");
//装载组件
foreach (Type t in ab.GetTypes())
{
if (t.IsClass && t.IsAbstract)
{
MethodInfo[] miArr = t.GetMethods();
object o = Activator.CreateInstance(t);//创建实例
//创建无参构造函数
foreach (MethodInfo m in miArr)
{
if (m.IsAbstract && m.IsStatic && m.GetParameters().Length == 0)
{
object re = m.Invoke(o, null);
Response.Write(m.Name + "," + re+"<br>");
}
}
}
}
}
{
Assembly ab = Assembly.LoadFrom(@"D:\my_project\MmyeeAd\BLL\bin\Debug\LTP.Common.dll");
//装载组件
foreach (Type t in ab.GetTypes())
{
if (t.IsClass && t.IsAbstract)
{
MethodInfo[] miArr = t.GetMethods();
object o = Activator.CreateInstance(t);//创建实例
//创建无参构造函数
foreach (MethodInfo m in miArr)
{
if (m.IsAbstract && m.IsStatic && m.GetParameters().Length == 0)
{
object re = m.Invoke(o, null);
Response.Write(m.Name + "," + re+"<br>");
}
}
}
}
}