当前位置: 首页 > news >正文

模块封装与程序集

一.什么是模块封装

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

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

 

转载于:https://www.cnblogs.com/Artist007/p/11014264.html

相关文章:

  • 剑指offer系列15:栈的压入、弹出序列
  • go语言快速入门教程
  • 物理学界四大神兽
  • Redis数据操作
  • Vue2.0 中,“渐进式框架”和“自底向上增量开发的设计”这两个概念是什么?(转)...
  • 9、Java语句
  • [转载]SQL Server查找包含某关键字的存储过程3种方法
  • Android 项目优化(二):启动页面优化
  • 微信小程序常用样式汇总
  • 虚拟机导入虚拟电脑 环境变量丢失
  • mysql优化:覆盖索引(延迟关联)
  • 编译原理--02 自顶向下、自底向上的LR分析复习(清华大学出版社第3版)
  • webservice服务器借用cxf工具开发
  • 软件测试2019:第八次作业—— 缺陷管理(含缺陷管理工具的配置实验)
  • 实验6 流类库与I/O
  • SegmentFault for Android 3.0 发布
  • Android 架构优化~MVP 架构改造
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • django开发-定时任务的使用
  • Fastjson的基本使用方法大全
  • HashMap ConcurrentHashMap
  • IndexedDB
  • iOS 颜色设置看我就够了
  • Joomla 2.x, 3.x useful code cheatsheet
  • LeetCode18.四数之和 JavaScript
  • Linux快速复制或删除大量小文件
  • python docx文档转html页面
  • spring security oauth2 password授权模式
  • swift基础之_对象 实例方法 对象方法。
  • 第2章 网络文档
  • 缓存与缓冲
  • 三栏布局总结
  • 深度学习在携程攻略社区的应用
  • 详解移动APP与web APP的区别
  • 自制字幕遮挡器
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • !!Dom4j 学习笔记
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (7)STL算法之交换赋值
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (一) storm的集群安装与配置
  • (原)本想说脏话,奈何已放下
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET 反射的使用
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .net反编译的九款神器
  • .Net中wcf服务生成及调用
  • .ui文件相关
  • [Angular] 笔记 21:@ViewChild
  • [autojs]逍遥模拟器和vscode对接