模块封装与程序集

一.什么是模块封装

模块封装最直接的形式是类库,但是类库不是模块封装的唯一形式,我们将实现某些职能的代码以类库的形式封装起来,就可以达到模块封装的目的,我们以设计一个计算器为例:

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")]

猜你喜欢

转载自www.cnblogs.com/Artist007/p/11014264.html