使用Assembly来开发c#程序
2011-12-09 10:49
281 查看
使用Assembly来开发c#程序
什么是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}
由于Assembly的存在给我们在实现设计模式上有了一个更好的选择。
我们在开发的时候有时候会遇到这样的一个问题,根据对应的名称来创建指定的对象。如:给出chinese就要创建一个chinese对象,以前我们只能这样来写代码:
1if (strongClassName == "China") 2 cy = new China(); 3else if (strongClassName == "America") 4 cy = new America();
那么如果我们有很长的一系列对象要创建,这样的代码维护起来是很困难的,而且也不容易阅读。现在我们可以通过在外部文件定义类的程序集名称和类的强名称来获得这样一个实例,即易于理解,又增强了扩展性还不用修改代码。
cy = (Country)Assembly.Load(assemblyName).CreateInstance(strongClassName);
结论
Assembly类有很多的方法和属性,它和Type一样有很多功能用于名称与方法和属性之间的转化。深入理解这两个类,你就可以清晰通用语言层是如何工作。
将想法付诸于实践,借此来影响他人是一个人存在的真正价值
相关文章推荐
- 使用Assembly来开发C#程序
- 使用Assembly来开发c#程序
- 使用Assembly来开发c#程序
- 使用Assembly来开发c#程序
- 使用C#开发SmartPhone程序入门1
- Build a service by C#.net(使用C#开发服务提供程序)
- 在 Windows Server 2003 SP2 下部署使用 C# 开发的 MMC 控制台程序
- 使用C#开发winform程序的界面框架
- MonoDroid使用C#开发Android程序
- 使用C#开发读取POP3邮件程序
- ASP.NET,C#.NET 通用权限系统组件源码使用说明,程序开发的尚方宝剑,程序架构标准参考,程序开发必备知识
- C# WinForm开发中使用XML配置程序
- 使用C#和OpenPop.dll开发读取POP3邮件程序
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- 使用C#开发winform程序的界面框架
- 使用.net框架应用C#语言开发窗口程序的一些注意事项
- C#使用 SQLite 数据库 开发的配置过程及基本操作类,实例程序:工商银行贵金属行情查看小工具
- ffmpeg音频转换程序不能用于IIS服务端使用问题(C#开发)
- 使用C#和Excel进行报表开发(八)-用程序绑定数据源
- 使用C#和Excel进行报表开发(八)-用程序绑定数据源