zoukankan      html  css  js  c++  java
  • 什么是Assembly(程序集)?

    Assembly是一个包含来程序的名称,版本号,自我描述,文件关联关系和文件位置等信息的一个集合。在.net框架中通过Assembly类来支持,该类位于System.Reflection下,物理位置位于:mscorlib.dll。
    Assembly能干什么?
    我们可以通过Assembly的信息来获取程序的类,实例等编程需要用到的信息。

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

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Reflection;
    namespace NamespaceRef
    {
        class Program
        {
            static void Main(string[] args)
            {
                 Country cy;
                 String assemblyName = @"NamespaceRef";
                string strongClassName = @"NamespaceRef.China";
                // 注意:这里类名必须为强类名
                // assemblyName可以通过工程的AssemblyInfo.cs中找到
                 cy = (Country)Assembly.Load(assemblyName).CreateInstance(strongClassName);
                 Console.WriteLine(cy.name);
                 Console.ReadKey();
             }
         }

        class Country
        {
            public string name;
         }

        class Chinese : Country
        {
            public Chinese()
            {
                 name = "你好";
             }
         }

        class America : Country
        {
            public America()
            {
                 name = "Hello";
             }
         }
    }

    由于Assembly的存在给我们在实现设计模式上有了一个更好的选择。
    我们在开发的时候有时候会遇到这样的一个问题,根据对应的名称来创建指定的对象。如:给出chinese就要创建一个chinese对象,以前我们只能这样来写代码:

    if (strongClassName =="China")
    cy
    =new China();
    elseif (strongClassName =="America")
    cy
    =new America();

    么如果我们有很长的一系列对象要创建,这样的代码维护起来是很困难的,而且也不容易阅读。现在我们可以通过在外部文件定义类的程序集名称和类的强名称来获得这样一个实例,即易于理解,又增强了扩展性还不用修改代码。

    cy = (Country)Assembly.Load(assemblyName).CreateInstance(strongClassName);
  • 相关阅读:
    查询避免Unknown column ‘xxx’ in ‘where clause’
    SSM框架——Spring+SpringMVC+Mybatis的搭建
    虚拟机VMware12安装Windows7教程
    IntelliJ IDEA 安装破解详解
    Jar包进行反编译,修改后重新打包
    Thinking in Java 4th(Java编程思想第四版)文档、源码、习题答案
    面向对象编程思想概览(六)异常处理
    面向对象编程思想概览(五)线程的同步
    面向对象编程思想概览(四)多线程
    DL四(预处理:主成分分析与白化 Preprocessing PCA and Whitening )
  • 原文地址:https://www.cnblogs.com/northeastTycoon/p/2789456.html
Copyright © 2011-2022 走看看