Assembly介绍及使用
来源:互联网 发布:淘宝小蜜投诉有用吗 编辑:程序博客网 时间:2024/04/30 20:10
什么是Assembly(程序集)?
Assembly是一个包含来程序的名称,版本号,自我描述,文件关联关系和文件位置等信息的一个集合。在.net框架中通过Assembly类来支持,该类位于System.Reflection下,物理位置位于:mscorlib.dll。
Assembly能干什么?
我们可以通过Assembly的信息来获取程序的类,实例等编程需要用到的信息。
一个简单的演示实例:
1.建立一个Console工程名为:NamespaceRef
2.写入如下代码:
1using System;
2using System.Collections.Generic;
3using System.Text;
4using System.Reflection;
5
6namespace 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}
2using System.Collections.Generic;
3using System.Text;
4using System.Reflection;
5
6namespace 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对象,以前我们只能这样来写代码:
1if (strongClassName== "China")
2 cy= new China();
3elseif (strongClassName== "America")
4 cy= new America();
那么如果我们有很长的一系列对象要创建,这样的代码维护起来是很困难的,而且也不容易阅读。现在我们可以通过在外部文件定义类的程序集名称和类的强名称来获得这样一个实例,即易于理解,又增强了扩展性还不用修改代码。2 cy= new China();
3elseif (strongClassName== "America")
4 cy= new America();
cy = (Country)Assembly.Load(assemblyName).CreateInstance(strongClassName);
结论
Assembly类有很多的方法和属性,它和Type一样有很多功能用于名称与方法和属性之间的转化。深入理解这两个类,你就可以清晰通用语言层是如何工作。
0 0
- Assembly介绍及使用
- C#反射中Assembly.Load及Assembly.Load.CreateInstance方法介绍
- C#反射中Assembly.Load及Assembly.Load.CreateInstance方法介绍
- C#反射之一(Assembly.Load及Assembly.Load.CreateInstance方法介绍)
- C#反射中Assembly.Load及Assembly.Load.CreateInstance方法介绍
- C#反射中Assembly.Load及Assembly.Load.CreateInstance方法介绍
- C#反射中Assembly.Load及Assembly.Load.CreateInstance方法介绍
- C#反射之一(Assembly.Load及Assembly.Load.CreateInstance方法介绍)
- C#反射之一(Assembly.Load及Assembly.Load.CreateInstance方法介绍)
- C#反射中Assembly.Load及Assembly.Load.CreateInstance方法介绍
- C#反射中Assembly.Load及Assembly.Load.CreateInstance方法介绍
- C#反射中Assembly.Load及Assembly.Load.CreateInstance方法介绍
- 使用Assembly
- Maven Assembly插件介绍
- Maven Assembly插件介绍
- Maven Assembly插件介绍
- Maven Assembly插件介绍
- Maven Assembly插件介绍
- 基于VOIP的SIP协议分析
- ssh, telnet在发起什么连接请求?
- 汇编指令
- 处理 ORA-01078: failure in processing system parameters
- java中的类详细!
- Assembly介绍及使用
- POJ 3734 wata 的快速幂 模板。
- 应用的属性列表info.plist
- 201111621218廖家琦第二周课外作业
- 对数据库DML操作进行封装成简单的工具
- Hibernate中的复合主键映射
- 栈-----括号匹配+表达式计算
- Siege: 发送带Cookie的请求
- OpenCV鼠标控制窗口大小(使用1.0vison)