一.什么是模块封装
模块封装最直接的形式是类库,但是类库不是模块封装的唯一形式,我们将实现某些职能的代码以类库的形式封装起来,就可以达到模块封装的目的,我们以设计一个计算器为例:
CalDll是实现计算的类库
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace CalDll { public class Calculator { public int Add(int a, int b) { return a + b; } public double Add(double a, double b) { return a + b; } } }
在winform窗体中,我们调用实现计算的类库,达到计算的目的:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using CalDll; namespace CalDemo { public partial class FrmMain : Form { public FrmMain() { InitializeComponent(); } private void btnCal_Click(object sender, EventArgs e) { int num1 = Convert.ToInt32(this.txtNum1.Text.Trim()); int num2 = Convert.ToInt32(this.txtNum2.Text.Trim()); int result = new Calculator().Add(num1, num2); this.lblResult.Text = result.ToString(); } } }
程序运行结果如下:
二.什么是程序集
程序集是应用程序的部署单元,.NET应用程序包含一个或多个程序集。通常扩展名是EXE或DLL 的.NET可执行程序称为程序集。千万不要将程序集简单的理解为Dll文件,这种想法是错误的。
下图表示的程序集的逻辑架构:
程序集的相关信息可以在Properties 中的AssemblyInfo.CS中修改:
using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // 有关程序集的常规信息通过以下 // 特性集控制。更改这些特性值可修改 // 与程序集关联的信息。 [assembly: AssemblyTitle("CalDemo")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("")] [assembly: AssemblyCopyright("Copyright @ ")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // 将 ComVisible 设置为 false 使此程序集中的类型 // 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, // 则将该类型上的 ComVisible 特性设置为 true。 [assembly: ComVisible(false)] // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID [assembly: Guid("b9d17b02-0550-4197-b5d5-92d40c4d4254")] // 程序集的版本信息由下面四个值组成: // // 主版本 // 次版本 // 生成号 // 修订号 // // 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, // 方法是按如下所示使用“*”: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")]