微软中所说的模块是指什么?

weizhuangwen 2013-07-18 08:47:46
我通过反射一个DLL,并且用Assembly.GetModules()返回这个DLL中的所有模块。
但返回的结果集中始终只有一个。
然后我尝试定义了两个命名空间,但反射后它们还是属于同一个模块,那么模块到底指什么?
怎么在一个DLL中弄出两个模块来?

以下是我定义的模块

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 插件1
{
public class Class1 : 插件开发.IShow
{
public string Show1()
{
return "大家好,我是插件1";
}
}
}
namespace 测试的命名空间
{
public class 测试的类1
{
public string Show1()
{
return "我只是个测试1";
}
}
}

以下是我所用的反射方式

System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFrom("DLL的路径");
int a=1;
foreach (Module mod in asm.GetModules(true))
{
MessageBox.Show("我属于第"+a.toString()+"个模块");//asm.GetModules()后始终只有一个
a++;
}


问题是:我怎么定义一个DLL,反射后才能弄出两个模块呢?还有模块具体到底指什么?
...全文
173 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Regan-lin 2013-07-19
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
基本上,它就是指一个.dll或者.exe文件所包含的代码物。当给系统注册一个进程(或服务)等等的时候,就以模块为单位。
+1
weizhuangwen 2013-07-19
  • 打赏
  • 举报
回复
引用 4 楼 sp1234 的回复:
所谓多模块,是通过手工方式(一种命令行连接程序)把多个模块给打包在一起。例如把一个.exe跟它所引用的一堆.dll全都打包成一个.exe文件(通常不支持.dll,所以不要到.dll中去找)。 例如使用al.exe。
嗯,经过你说的,现在概念清晰了
linrachel 2013-07-18
  • 打赏
  • 举报
回复
.NET程序集(Assembly)由模块(Module)组成,Assembly是标准的Windows PE文件,包括各种文件头信息。而模块不包含这些头信息。由于Visual Studio并没有提供将代码编译成Module的功能,所以一般很少使用。。 具体的内容可以参见Clr Via C#,上面讲的比较详细。
智商余额不足 2013-07-18
  • 打赏
  • 举报
回复
CLR VIA C#
  • 打赏
  • 举报
回复
模块是一个可移植可执行文件(例如 type.dll 或 application.exe),该文件由一个或多个类和接口组成。单个模块可包含多个命名空间,而一个命名空间可跨越多个模块。 http://msdn.microsoft.com/zh-cn/library/system.reflection.module(v=VS.90).aspx
  • 打赏
  • 举报
回复
所谓多模块,是通过手工方式(一种命令行连接程序)把多个模块给打包在一起。例如把一个.exe跟它所引用的一堆.dll全都打包成一个.exe文件(通常不支持.dll,所以不要到.dll中去找)。 例如使用al.exe。
  • 打赏
  • 举报
回复
基本上,它就是指一个.dll或者.exe文件所包含的代码物。当给系统注册一个进程(或服务)等等的时候,就以模块为单位。
江湖评谈 2013-07-18
  • 打赏
  • 举报
回复
一个DLL一个模块,两个DLL才两个两个模块。所以你上面代码只能出现一次
devmiao 2013-07-18
  • 打赏
  • 举报
回复
VB.NET才支持模块

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧