c# Assembly 类

原创 2012年03月29日 18:10:35

什么是Assembly(程序集)?
Assembly是一个包含来程序的名称,版本号,自我描述,文件关联关系和文件位置等信息的一个集合。在.net框架中通过Assembly类来支持,该类位于System.Reflection下,物理位置位于:mscorlib.dll。

Assembly能干什么?
我们可以通过Assembly的信息来获取程序的类,实例等编程需要用到的信息。

一个简单的演示实例:
1.建立一个Console工程名为:NamespaceRef
2.写入如下代码:

using System;
2using System.Collections.Generic;
3using System.Text;
4using System.Reflection;
5
6namespace NamespaceRef
7{
8    class Program
9    {
10        staticvoid 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        publicstring 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         }
    }
}

由于Assembly的存在给我们在实现设计模式上有了一个更好的选择。
我们在开发的时候有时候会遇到这样的一个问题,根据对应的名称来创建指定的对象。如:给出chinese就要创建一个chinese对象,以前我们只能这样来写代码:
1if (strongClassName== "China")
2     cy= new China();
3elseif (strongClassName== "America")
4     cy= new America();
那么如果我们有很长的一系列对象要创建,这样的代码维护起来是很困难的,而且也不容易阅读。现在我们可以通过在外部文件定义类的程序集名称和类的强名称来获得这样一个实例,即易于理解,又增强了扩展性还不用修改代码。
cy = (Country)Assembly.Load(assemblyName).CreateInstance(strongClassName);

结论
Assembly类有很多的方法和属性,它和Type一样有很多功能用于名称与方法和属性之间的转化。深入理解这两个类,你就可以清晰通用语言层是如何工作。

四探C#类与结构体究竟谁快——跨程序集(assembly)调用

前面的三次测试都是在同一个项目内的,既处于同一个程序集。那么,跨程序集调用会怎么样呢? 因为为了保证可维护性,我们会把一些常用操作封装到类库中去。然后实际项目开发时,引用该类库,使得解决方案中存在多...
  • zyl910
  • zyl910
  • 2011年10月01日 23:23
  • 968

c#利用反射Assembly 对类和成员属性进行操作

protected static void test() { //获取程序集 Assembly assembly = System...

C# 反射 Type Assembly类

反射的用途:     (1)使用Assembly定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型并创建该类型的实例。     (2)使用Module了解包含模块的程序集以及模...

C# 使用‘反射(Assembly)’查找具有指定‘特性(Attributes) ’的类

----------------------------------------------------- 1.测试需要的特性 using System; using System.Collec...

C#反射Assembly 详细说明

1、对C#反射机制的理解 2、概念理解后,必须找到方法去完成,给出管理的主要语法 3、最终给出实用的例子,反射出来dll中的方法 反射是一个程序集发现及运行的过程,通过反射可以得到*.exe...
  • 99guo
  • 99guo
  • 2015年04月24日 15:34
  • 299

C#反射Assembly 详细说明

转载自:http://blog.csdn.net/lyncai/article/details/8621880 1、对C#反射机制的理解 2、概念理解后,必须找到方法去完成,给出管理的主要语法 3...

C#反射Assembly 详细说明【1】

什么是Assembly(程序集)? Assembly是一个包含来程序的名称,版本号,自我描述,文件关联关系和文件位置等信息的一个集合。在.net框架中通过Assembly类来支持,该类位于System...

C#反射的Assembly的简单应用

反射(Reflection)是.NET中的重要机制,通过反射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的...

C#反射Assembly 详细说明【2】

1、对C#反射机制的理解 2、概念理解后,必须找到方法去完成,给出管理的主要语法 3、最终给出实用的例子,反射出来dll中的方法 反射是一个程序集发现及运行的过程,通过反射可以得到*.exe或*.d...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c# Assembly 类
举报原因:
原因补充:

(最多只允许输入30个字)