亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#中的程序集和反射介紹

2020-01-24 02:12:07
字體:
來源:轉載
供稿:網友

什么是程序集?

1.程序集(assembly)是一個及一個以上托管模塊,以及一些資源文件的邏輯組合。
2.程序集是組件復用,以及實施安全策略和版本策略的最小單位。
3.程序集是包含一個或者多個類型定義文件和資源文件的集合。在程序集包含的所有文件中,有一個文件用于保存清單。(清單是元數據部分中一組數據表的集合,其中包含了程序集中一部分文件的名稱,描述了程序集的版本,語言文化,發布者,共有導出類型,以及組成該程序集的所有文件)。
4、在編譯應用程序中,所創建的CIL代碼存儲在一個程序集中,程序集包括可執行的應用程序文件(.exe擴展名文件)和其他應用程序使用的庫(.dll擴展名文件)。

作為一個單元進行版本控制和部署的一個或多個文件的集合。程序集是.NETFramework 應用程序的主要構造塊。所有托管類型和資源都包含在某個程序集內,并被標記為只能在該程序集的內部訪問,或者被標記為可以從其他程序集中的代碼訪問。程序集在安全方面也起著重要作用。代碼訪問安全系統使用程序集信息來確定為程序集中的代碼授予的權限集。

程序集是.NET Framework編程的基本組成部分。(此上是在百度百科的定義)
簡單的說,net中的dll和exe文件都是程序集

程序集包含資源文件,類型元數據(描述在代碼中定義的每一類型和成員,二進制形式)、IL代碼(這些都被裝在exe或dll中),每個程序集都有自己的名稱、版本等信息。這些信息可以通過AssemblyInfo.cs文件來自己定義。

復制代碼 代碼如下:

using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// 有關程序集的常規信息通過以下
// 特性集控制。更改這些特性值可修改
// 與程序集關聯的信息。
[assembly: AssemblyTitle("AssemblyDemo")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("AssemblyDemo")]
[assembly: AssemblyCopyright("Copyright ©  2013")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// 將 ComVisible 設置為 false 使此程序集中的類型
// 對 COM 組件不可見。如果需要從 COM 訪問此程序集中的類型,
// 則將該類型上的 ComVisible 特性設置為 true。
[assembly: ComVisible(false)]

// 如果此項目向 COM 公開,則下列 GUID 用于類型庫的 ID
[assembly: Guid("e7da9959-0c97-444c-aa40-6d9bbf728068")]

// 程序集的版本信息由下面四個值組成:
//
//      主版本
//      次版本
//      內部版本號
//      修訂號
//
// 可以指定所有這些值,也可以使用“內部版本號”和“修訂號”的默認值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

AssemblyInfo.cs

使用程序集的優點:

程序只需要應用必要的程序集,減少了編碼量(例如log4net.dll),程序的尺寸 。
可以在程序集中封裝一些代碼,提供必要的接口,供引用該程序集的項目使用。   

反射

提到程序集,就不得不說反射。反射就是動態獲取程序集中的元數據(提供程序集的類型信息)的功能。也就是動態獲取程序集中的元數據來操作類型的。比如咱們使用的vs中的智能提示,就是通過反射獲取類的方法、屬性的。

Type類是實現反射的一個很重要的類,通過它我們可以獲取類中的所有信息包括方法、屬性等。可以動態調用類的屬性機及方法。

Type是對類的描述。

一個簡單的例子新建一個類庫MyAssembly添加Person類,生成:

復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace MyAssembly
{
    public class Person
    {
        private string name;
 
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        private int age;
 
        public int Age
        {
            get { return age; }
            set { age = value; }
        }
        private string gender;
 
        public string Gender
        {
            get { return gender; }
            set { gender = value; }
        }
        public Person(string name, int age, string gender)
        {
            this.name = name;
            this.age = age;
            this.gender = gender;
        }
        public void SayHi()
        {
            Console.WriteLine("大家好,我是{0},今年{1}歲了。",this.name,this.age);
        }
    }
}

新建一個控制臺項目AssemblyDemo,將MyAssembly.dll復制到控制臺bin/debug下,接下來通過動態加載程序集MyAssembly.dll獲取該程序集下person類的屬性和方法。代碼如下:

復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Reflection;

namespace AssemblyDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //通過反射動態調用另一個程序集中的方法
            //1加載程序集
            string path = AppDomain.CurrentDomain.BaseDirectory;//獲取當前.exe執行文件的路徑
            path = Path.Combine(path, "MyAssembly.dll");//拼接程序集的路徑
            Assembly assembly = Assembly.LoadFile(path);
            //2創建Person類的對象
            Type type = assembly.GetType("MyAssembly.Person");
            object o = Activator.CreateInstance(type,"wolf",22,"未知");//實例化
            //3獲取方法的類型
            MethodInfo methodInfo = type.GetMethod("SayHi");
            //4反射調用方法
            methodInfo.Invoke(o, null);
            Console.Read();
        }
    }
}

結果:

未完待續。。。。。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美另类暴力丝袜| 国产精品电影网站| 国产精品免费视频久久久| 色与欲影视天天看综合网| 国产成人拍精品视频午夜网站| 亚洲精品国产免费| 成人做爰www免费看视频网站| 欧美人与性动交a欧美精品| 久久国产精品视频| 国产精品美女av| 97人洗澡人人免费公开视频碰碰碰| 精品亚洲一区二区三区| 国产精品对白刺激| 亚洲欧美综合区自拍另类| 欧美日韩国产在线播放| 亚洲综合第一页| 国产不卡av在线| 黄色成人av网| 欧美另类高清videos| 国产精品一区久久久| 成人美女免费网站视频| 在线播放国产一区中文字幕剧情欧美| 成人午夜小视频| 日韩美女在线看| 久久亚洲私人国产精品va| 97精品在线视频| 91在线无精精品一区二区| 亚洲国产99精品国自产| 国产丝袜精品第一页| 亚洲成成品网站| 欧美性感美女h网站在线观看免费| 国产精品久久91| 色中色综合影院手机版在线观看| 久久91亚洲人成电影网站| 全亚洲最色的网站在线观看| 国产精品激情av电影在线观看| 深夜成人在线观看| 疯狂蹂躏欧美一区二区精品| 久久视频在线免费观看| 成人国产精品免费视频| 欧美精品久久久久久久久| 国产专区欧美专区| 亚洲xxxx18| 国产精品入口福利| 欧美精品videossex88| 97成人超碰免| 欧美专区中文字幕| 精品国产一区二区三区久久久狼| 91麻豆国产精品| 狠狠躁夜夜躁人人躁婷婷91| 国产一区二区精品丝袜| 亚洲无亚洲人成网站77777| 中文字幕亚洲在线| 日韩视频免费看| 久久久久久久久久久国产| 国产日韩在线播放| 欧美午夜片欧美片在线观看| 亚洲mm色国产网站| 中文字幕av一区二区三区谷原希美| 欧美性猛交xxxx富婆| 国产在线观看精品| 久久97精品久久久久久久不卡| 国产精品成人播放| 日韩欧美在线观看视频| 一区二区三区高清国产| 久久久av一区| 亚洲欧洲在线免费| 国产成人综合精品| 欧美华人在线视频| 日本国产欧美一区二区三区| 国产精品福利在线| 国产精品一区二区久久| 欧美电影在线观看网站| 亚洲自拍高清视频网站| 欧美视频国产精品| 亚洲成色www8888| 91在线网站视频| 97热精品视频官网| 成人国内精品久久久久一区| 日韩精品在线视频美女| 国产精品va在线播放我和闺蜜| 欧美日韩国产一区二区| 91在线视频一区| 久久久免费精品| 色老头一区二区三区在线观看| 欧美大人香蕉在线| 欧美成年人视频| 日韩国产在线播放| 欧美亚洲在线视频| 国产精品久久一区主播| 91影院在线免费观看视频| 欧美成人性生活| 日韩网站在线观看| 欧美性在线观看| 中文字幕亚洲欧美日韩2019| 欧美电影在线观看完整版| 日韩欧美精品网站| 国产成人精品午夜| 欧美在线视频在线播放完整版免费观看| 91国语精品自产拍在线观看性色| 精品自在线视频| 欧美午夜www高清视频| 久久久免费精品| 亚洲福利视频久久| 性欧美xxxx| 亚洲综合一区二区不卡| 一区二区三区无码高清视频| 91日本视频在线| 亚洲国产欧美自拍| 91高清视频免费| 中文字幕精品久久久久| 日韩精品在线观看网站| 国产精品白丝jk喷水视频一区| 欧美性开放视频| 亚洲色图日韩av| 亚洲人成网7777777国产| 日韩av一区在线观看| 久久中文字幕视频| 18一19gay欧美视频网站| 精品日韩视频在线观看| 亚洲第一网中文字幕| 日韩在线免费高清视频| 欧美另类在线播放| 久久久久久久97| 色偷偷偷亚洲综合网另类| 亚洲成人教育av| 国产激情久久久| 粉嫩老牛aⅴ一区二区三区| 亚洲最大av网| 亚洲福利视频免费观看| 国产精品成人观看视频国产奇米| 中文字幕亚洲欧美日韩在线不卡| 日韩福利在线播放| 国模极品一区二区三区| 91国在线精品国内播放| 日韩有码在线视频| 精品国产一区二区三区久久| 亚洲天堂免费观看| 欧洲亚洲在线视频| 欧美成人手机在线| 久久久噜噜噜久久久| 国自产精品手机在线观看视频| 成人欧美一区二区三区在线| 夜夜躁日日躁狠狠久久88av| 成人福利视频在线观看| 久久国产精品影视| 久久中文字幕国产| 亚洲四色影视在线观看| 日韩女优人人人人射在线视频| 国产精品黄色av| 日韩美女在线观看| 欧美日韩国产999| 91日本在线观看| 91国语精品自产拍在线观看性色| 亚洲美女又黄又爽在线观看| 中文字幕少妇一区二区三区| 国产精品视频男人的天堂| 欧美精品999| 2019中文字幕全在线观看| www.日本久久久久com.| 日本欧美爱爱爱| 国产精品美女久久久久久免费| 日韩av影片在线观看| 欧美高清视频免费观看|