• <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

            『站在風(fēng)口浪尖緊握住鼠標(biāo)旋轉(zhuǎn)!』 http://www.cnblogs.com/twzheng

              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              136 隨筆 :: 78 文章 :: 353 評(píng)論 :: 0 Trackbacks

            使用Assembly來(lái)開(kāi)發(fā)c#程序

            什么是Assembly(程序集)?

            Assembly是一個(gè)包含來(lái)程序的名稱(chēng),版本號(hào),自我描述,文件關(guān)聯(lián)關(guān)系和文件位置等信息的一個(gè)集合。在.net框架中通過(guò)Assembly類(lèi)來(lái)支持,該類(lèi)位于System.Reflection下,物理位置位于:mscorlib.dll。

            Assembly能干什么?
            我們可以通過(guò)Assembly的信息來(lái)獲取程序的類(lèi),實(shí)例等編程需要用到的信息。

            一個(gè)簡(jiǎn)單的演示實(shí)例:
            1.建立一個(gè)Console工程名為:NamespaceRef
            2.寫(xiě)入如下代碼:

             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            // 注意:這里類(lèi)名必須為強(qiáng)類(lèi)名
            16            // assemblyName可以通過(guò)工程的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的存在給我們?cè)趯?shí)現(xiàn)設(shè)計(jì)模式上有了一個(gè)更好的選擇。
            我們?cè)陂_(kāi)發(fā)的時(shí)候有時(shí)候會(huì)遇到這樣的一個(gè)問(wèn)題,根據(jù)對(duì)應(yīng)的名稱(chēng)來(lái)創(chuàng)建指定的對(duì)象。如:給出chinese就要?jiǎng)?chuàng)建一個(gè)chinese對(duì)象,以前我們只能這樣來(lái)寫(xiě)代碼:
            1if (strongClassName == "China")
            2    cy = new China();
            3else if (strongClassName == "America")
            4    cy = new America();
            那么如果我們有很長(zhǎng)的一系列對(duì)象要?jiǎng)?chuàng)建,這樣的代碼維護(hù)起來(lái)是很困難的,而且也不容易閱讀?,F(xiàn)在我們可以通過(guò)在外部文件定義類(lèi)的程序集名稱(chēng)和類(lèi)的強(qiáng)名稱(chēng)來(lái)獲得這樣一個(gè)實(shí)例,即易于理解,又增強(qiáng)了擴(kuò)展性還不用修改代碼。
            cy = (Country)Assembly.Load(assemblyName).CreateInstance(strongClassName);

            結(jié)論
            Assembly類(lèi)有很多的方法和屬性,它和Type一樣有很多功能用于名稱(chēng)與方法和屬性之間的轉(zhuǎn)化。深入理解這兩個(gè)類(lèi),你就可以清晰通用語(yǔ)言層是如何工作。
            posted on 2008-03-17 21:37 譚文政 閱讀(559) 評(píng)論(1)  編輯 收藏 引用 所屬分類(lèi): windows 編程

            評(píng)論

            # re: [轉(zhuǎn)帖]使用Assembly來(lái)開(kāi)發(fā)c#程序 2008-07-14 11:14 null
            敢問(wèn)第14行的 NamespaceRef.China 是從何而來(lái)啊

            能這樣創(chuàng)建一個(gè)根本不存在china? 拜托 這帖子被轉(zhuǎn)了 n遍 能不能動(dòng)點(diǎn)腦子啊   回復(fù)  更多評(píng)論
              

            久久九九免费高清视频| 东京热TOKYO综合久久精品| 蜜桃麻豆WWW久久囤产精品| 精品久久人妻av中文字幕| 久久精品国产99久久丝袜| 99久久久精品| 亚洲精品无码专区久久久| 久久se精品一区二区影院| 精品久久人妻av中文字幕| 久久婷婷是五月综合色狠狠| 久久综合九色综合97_久久久| 久久久久久国产a免费观看黄色大片 | 99蜜桃臀久久久欧美精品网站| 91精品久久久久久无码| 久久久久99精品成人片试看| 中文字幕亚洲综合久久菠萝蜜| 久久九九亚洲精品| 久久国产精品成人片免费| 国产69精品久久久久观看软件| 国产精品美女久久久久AV福利| 久久99中文字幕久久| 久久精品人人做人人爽电影蜜月| 综合久久精品色| 亚洲国产成人久久精品99 | 久久久久久久免费视频| 蜜臀久久99精品久久久久久| 久久精品亚洲精品国产欧美| 久久精品人人做人人爽电影| 99久久婷婷国产综合亚洲| 久久99精品久久只有精品| 午夜久久久久久禁播电影| 亚洲中文字幕无码一久久区| 久久久久亚洲国产| 囯产极品美女高潮无套久久久| 亚洲综合伊人久久综合| 东方aⅴ免费观看久久av| 日韩人妻无码精品久久免费一 | 久久国产精品视频| 久久男人中文字幕资源站| 日本加勒比久久精品| 99久久做夜夜爱天天做精品|