Assembly介绍及使用
什么是Assembly(程序集)?
Assembly是一个包含来程序的名称,版本号,自我描述,文件关联关系和文件位置等信息的一个集合。在.net框架中通过Assembly类来支持,该类位于System.Reflection下,物理位置位于:mscorlib.dll。
Assembly能干什么?
我们可以通过Assembly的信息来获取程序的类,实例等编程需要用到的信息。
一个简单的演示实例:
1.建立一个Console工程名为:NamespaceRef
2.写入如下代码:
2 using System.Collections.Generic;
3 using System.Text;
4 using System.Reflection;
5
6 namespace NamespaceRef
7 {
8 class Program
9 {
10 static void Main( string [] args)
11 {
12 Country cy;
13 String assemblyName = @" NamespaceRef " ;
14 string strongClassName = @" NamespaceRef.China " ;
15 // 注意:这里类名必须为强类名
16 // assemblyName可以通过工程的AssemblyInfo.cs中找到
17 cy = (Country)Assembly.Load(assemblyName).CreateInstance(strongClassName);
18 Console.WriteLine(cy.name);
19 Console.ReadKey();
20 }
21 }
22
23 class Country
24 {
25 public string name;
26 }
27
28 class Chinese : Country
29 {
30 public Chinese()
31 {
32 name = " 你好 " ;
33 }
34 }
35
36 class America : Country
37 {
38 public America()
39 {
40 name = " Hello " ;
41 }
42 }
43 }
由于Assembly的存在给我们在实现设计模式上有了一个更好的选择。
我们在开发的时候有时候会遇到这样的一个问题,根据对应的名称来创建指定的对象。如:给出chinese就要创建一个chinese对象,以前我们只能这样来写代码:
2 cy = new China();
3 else if (strongClassName == " America " )
4 cy = new America();
那么如果我们有很长的一系列对象要创建,这样的代码维护起来是很困难的,而且也不容易阅读。现在我们可以通过在外部文件定义类的程序集名称和类的强名称来获得这样一个实例,即易于理解,又增强了扩展性还不用修改代码。
cy = (Country)Assembly.Load(assemblyName).CreateInstance(strongClassName);
结论
Assembly类有很多的方法和属性,它和Type一样有很多功能用于名称与方法和属性之间的转化。深入理解这两个类,你就可以清晰通用语言层是如何工作。
Assembly介绍及使用相关推荐
- Assembly介绍
微软Windows应用程序经常受到动态链接库的拖累,这就是"DLL地狱"问题,在遇到此类麻烦的时候,应用程序的某一个组件会被其他应用程序的不兼容组件覆盖,结果令受到干扰的应用程序完 ...
- C# 反射类Assembly用法举例
概述 程序运行时,通过反射可以得到其它程序集或者自己程序集代码的各种信息,包括类.函数.变量等来实例化它们,执行它们,操作它们,实际上就是获取程序在内存中的映像,然后基于这个映像进行各种操作. Ass ...
- mysql integrityerror_mysql插入数据报错IntegrityError: (1062, Duplicate entry 'xx' for key 'xxxxx')...
1.问题描述 MySQL插入数据的时候报错,提示如下: IntegrityError: (1062, "Duplicate entry 'xx' for key 'xxxxx'") ...
- layer ajax返回成功 关闭窗口,layer.msg()自动关闭后刷新页面
nginx upstream的几种配备方式 nginx upstream的几种配置方式 nginx 的upstream目前支持4种方式的分配 1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服 ...
- Business Insider点评2011年最佳创业公司20强
北京时间12月6日消息,据国外媒体报道,国外科技圈内点评了2011年最佳创业公司20强.以下是Business Insider对这20家最佳创业公司的点评. Simple 一款帮助去除银行年费的全新的 ...
- C#反射之Assembly.Load,Assembly.LoadFile 与 Assembly.LoadFrom方法介绍
一些关于C#反射的知识,估计也就最多达到使用API的程度,至于要深入了解,以现在的水平估计很难做到,所以下面此篇文章,以作为一个阶段的总结. 对于反射的总结,我想从以下几个方面展开,首先是反射程序集, ...
- Maven Assembly插件 使用与标签介绍
Maven Assembly插件 使用与标签介绍 一.介绍 Assembly 插件的主要作用是,允许用户将项目输出与它的依赖项.模块.站点文档.和其他文件一起组装成一个可分发的归档文件. 二.常见的m ...
- Maven Assembly插件介绍
你是否想要创建一个包含脚本.配置文件以及所有运行时所依赖的元素(jar)Assembly插件能帮你构建一个完整的发布包. Assembly插件会生成 "assemblies", 此 ...
- Assembly学习心得
http://blog.csdn.net/etmonitor/ Assembly学习心得 说明: 最近开始准备把学到的.NET知识重新整理一遍,眼过千遍不如手过一遍,所以我准备记下我的学习心得,已备参 ...
最新文章
- 帮我看看这个是什么意思 c++代码
- Python 字符串笔记(转自木木)
- vue自定义指令截取图片中心显示
- 占内存小的qq_手机内存空间告急,这些办法就能轻松搞定!
- python+正则+多进程爬取糗事百科图片
- Here Document和Expect概述(免交互,变量设定,控制,注释,)(shell里使用EOF报错)
- Windows 64 位 mysql 5.7以上版本包解压中没有data目录和my-default.ini以及服务无法启动的解决办法以及修改初始密码的方法...
- 大数据财税与python应用_大数据跟python
- c语言枚举类型例题_[开源资讯]Zig 0.6.0 发布,想要挑战 C 语言
- 【JavaScript】Uncaught TypeError: Illegal invocation
- windows10风格 springboot mybatis 项目框架源码 shiro 集成代码生成器
- 三维点云学习(3)6- 实现K-Means
- Java中文乱码详解
- transcad安装教程_Transcad基础视频教程
- 行政区域村级划分数据库_两区划定数据库规范(试行)
- 巴菲特指标:估值过高
- 关于在数据库中如何存储时间这件事
- 中南大学复试上机:1021:机器人走迷宫
- APP软件测试点着重详解
- linux系统进程有哪几种主要状态,Linux 进程状态详解