• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            twzheng's cppblog

            『站在風口浪尖緊握住鼠標旋轉!』 http://www.cnblogs.com/twzheng

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              136 隨筆 :: 78 文章 :: 353 評論 :: 0 Trackbacks

            使用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一樣有很多功能用于名稱與方法和屬性之間的轉化。深入理解這兩個類,你就可以清晰通用語言層是如何工作。
            posted on 2008-03-17 21:37 譚文政 閱讀(545) 評論(1)  編輯 收藏 引用 所屬分類: windows 編程

            評論

            # re: [轉帖]使用Assembly來開發c#程序 2008-07-14 11:14 null
            敢問第14行的 NamespaceRef.China 是從何而來啊

            能這樣創建一個根本不存在china? 拜托 這帖子被轉了 n遍 能不能動點腦子啊   回復  更多評論
              

            国产一级做a爰片久久毛片| 精品久久久久久久久免费影院| 亚洲AV无码1区2区久久| 午夜欧美精品久久久久久久| 久久精品亚洲日本波多野结衣 | 国产精品美女久久久久av爽| 99久久人人爽亚洲精品美女| 国内精品久久国产| 精品久久777| 7777久久久国产精品消防器材| 久久99国产精品尤物| 久久国产成人亚洲精品影院| 久久精品国产亚洲AV不卡| 精品精品国产自在久久高清| 久久久久久曰本AV免费免费| 亚洲嫩草影院久久精品| 久久亚洲国产成人精品性色| 久久免费观看视频| 99久久精品国产一区二区| 一本久久a久久精品vr综合| 看全色黄大色大片免费久久久| 97久久精品国产精品青草| 中文字幕热久久久久久久| 久久久久无码精品国产app| 久久发布国产伦子伦精品| 久久久久久国产精品无码下载 | 久久精品国产亚洲Aⅴ香蕉 | 久久99国产精品尤物| 久久亚洲精品无码VA大香大香| 久久精品亚洲乱码伦伦中文| 久久久青草久久久青草| 国产精品99久久久久久人| 无码人妻久久久一区二区三区 | 综合网日日天干夜夜久久| 欧美日韩精品久久久久| 久久久久久国产精品无码下载| 天天综合久久久网| 亚洲一区中文字幕久久| 国产精品99久久精品爆乳| 伊人久久大香线焦综合四虎| 天天久久狠狠色综合|