对于初学者我来说,很多东西我都不知道。希望大家多多帮助!
.net使用反射时会使用到模块这个概念。对于模块这个概念我的解释就是你可以将一个模块理解为一个命名空间。下面是我写的代码。可以参考一下
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
namespace TestAssembly_2
{
class Program
{
static void Main(string[] args)
{
//loadFrom已知程序集的名称,加载程序集
//加载之前需要将TestAssembly_1.exe拷贝到当前程序目录下
//获取程序集的所有模块
//可以将module理解为一个命名空间
Module[] moudules = assembly.GetModules();
Console.WriteLine("获取当前加载的程序集(也就是命名空间):"+moudules[0].Name);
//获得类
Type[] type = moudules[0].GetTypes();
Console.WriteLine("类名:"+type[0].Name);
//获得里面的方法
MemberInfo[] mInFo = type[0].GetMethods();
foreach(MemberInfo i in mInFo){
//得到别的类中的方法
Console.WriteLine(i.Name);
}
}
}
运行结果如下:
如图所示:是任何一个类中公共拥有的方法。自定以的方法没有打印出来。再一看反射的程序里面定义的方法都是private...改成public就可以了。。。