亚洲必赢手机DotNet友元程序集解析。DotNet友元程序集解析。

by admin on 2018年10月5日

 
 项目支付的过程遭到,调试使用的也许是最为多的操作。任何代码写出来都急需经过调试和做,以此扩展以及提升程序的稳定和可靠性。谈到.NET的单元测试,在此虽得提提.NET的友元程序集就同特征,也借用.NET进行单元测试的一个较好用的.NET属性,来教学一下程序集、定制Attribute的连锁知识。一些学问要数的夺品味和反思,不要当你见面了就算未上心,等公放在心上的时,你就是来若干力不从心的意了。

 
 项目开支之历程被,调试使用的或是极度多的操作。任何代码写出来都待经调试和重组,以此扩展和提升程序的稳定性与可靠性。谈到.NET的单元测试,在此虽得提提.NET的友元程序集就同样特点,也借用.NET进行单元测试的一个较好用的.NET属性,来教一下程序集、定制Attribute的连带文化。一些学问要反复的失品尝和反思,不要觉得你见面了就算无检点,等公放在心上的时段,你就来几力不从心的意了。

   生活在不停止的折腾,只有经过磨练,才不过清楚何时要安分,何时要挑战。

   生活在不歇的煎熬,只有经磨练,才可理解何时要安分,何时要挑战。

   毒鸡汤喝了了,来聊聊正事…

   毒鸡汤喝了了,来聊聊正事…

一.程序集概述

 
本文主要是座谈“友元程序集”的片学问,既然是举行一个解析,那么就应当拿有知识做一个开展来论述。在这边先谈谈程序集(有人看大了解,有人当完全不知晓,情况不一,选择不同,需者自取吧),接下去我们切实的省程序集就无异于表征。

 
程序集是一个或者多独模块/资源文件之逻辑分组,程序集是选用、安全性和版本控制的太小单元。对于程序集的组织有如下图。

亚洲必赢手机 1

亚洲必赢手机 2

   
对于程序集的组成就不一一做分析,在这里就独自谈谈元数据就同样构造。元数据是一个二进制数据块,由同样组数据表,元数据连接和含IL代码的文件涉及,元数据由几只说明组成。元数据的意图产生上图介绍。元数据的表有三单门类:定义表,引用表,清单表。对于这些发明底构造在此间就是非开牵线了,有趣味的得查找一下,个人觉得首先数据及时同结构应该好的钻研一下。

一.程序集概述

 
本文主要是座谈“友元程序集”的组成部分知识,既然是做一个剖析,那么即便应该拿部分文化做一个进行来论述。在此间先谈谈程序集(有人觉得很了解,有人觉得了无晓,情况例外,选择不同,需者自取吧),接下去我们现实的探访程序集就同一特性。

 
程序集是一个要么多只模块/资源文件之逻辑分组,程序集是引用、安全性以及版本控制的无比小单元。对于程序集的结构发生如下图。

亚洲必赢手机 3

亚洲必赢手机 4

   
对于程序集的组成就不一一做分析,在此间就是独自谈谈元数据及时等同结构。元数据是一个二进制数据块,由同样组数据表,元数据连接和分包IL代码的文本涉及,元数据由几个说明组成。元数据的企图来高达图介绍。元数据的表有三独品类:定义表,引用表,清单表。对于这些发明底布局以此虽未举行牵线了,有趣味的足找寻一下,个人觉得长数据立马同一组织应该好好的研讨一下。

二.定制Attribute概述

 
 上面的阐释中略的牵线了程序集的构造与正数据,在此处大概的介绍一下定制Attribute这一.NET底表征。定制Attribute允许定义的音信使用被几各个一个长数据表记录项,这种可扩大的首先数据信息会当运转时查询,从而动态改变代码的施行办法。在C#种植,为了拿一个定制Attribute应用叫一个目标元素,需要以Attribute放置于目标元素前面的同对准方括号被。

 
 CLR允许用定制Attribute应用为可当文件之第一数据被意味的几拥有因素。定制Attribute主要使用为程序集、模块、类型、字段、方法、方法参数、方法返回值、属性、事件、泛型类型参数。attribute是相仿的一个实例,将一个attribute应用为一个对象元素时,语法类似于调用类的某部实例构造函数。定制Attribute的实例如下:

[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true, Inherited = false)]

   
上面代码取自InternalsVisibleToAttribute类中,该类是就友元程序集特性的主干目标,下面会开一个实际的介绍。AttributeUsage需要承受一个AttributeTargets朵举类型的值作为参数,称之为定位参数,是强制性的,必须指定。AllowMultiple参数用于获取或安装一个布尔值,指示是否发差不多个实例指定的性质可以呢单个程序元素指定。Inherited参数用于取或设置一个布尔值,指示指定的属性是否可继续由派生类和重写成员。

 
 定制Attribute可以用叫单个目标元素,定制Attribute的一一是不屑一顾的。在C#种植,可拿每个Attribute都封及同样对准方括号中,也足以当有方括号丁查封多个因逗号分隔的Attribute。

 
 定制Attribute就是一个像样的实例,它被序列化成驻留于头数据被之一个字节流,在运行时,可以对元数据中涵盖的字节进行反序列化,从而构筑造类的一个实例。

二.定制Attribute概述

 
 上面的论述中简单的牵线了次集的构造及首批数据,在这里大概的牵线一下定制Attribute这一.NET之风味。定制Attribute允许定义的消息以被几每一个首位数据表记录项,这种可扩大的首批数据信息可知以运作时查询,从而动态改变代码的履行方。在C#种植,为了将一个定制Attribute应用叫一个目标元素,需要以Attribute放置于目标元素前面的均等对方括号中。

 
 CLR允许用定制Attribute应用叫可当文书之冠数据遭到代表的几乎有因素。定制Attribute主要用叫程序集、模块、类型、字段、方法、方法参数、方法返回值、属性、事件、泛型类型参数。attribute是接近的一个实例,将一个attribute应用为一个靶元素时,语法类似于调用类的某个实例构造函数。定制Attribute的实例如下:

[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true, Inherited = false)]

   
上面代码取自InternalsVisibleToAttribute类中,该类是完成友元程序集特性的着力目标,下面会开一个切实的牵线。AttributeUsage需要接受一个AttributeTargets朵举类型的价作为参数,称之为定位参数,是强制性的,必须指定。AllowMultiple参数用于获取或安装一个布尔值,指示是否生差不多个实例指定的特性可以为单个程序元素指定。Inherited参数用于取或设置一个布尔值,指示指定的性能是否好连续由派生类和重写成员。

 
 定制Attribute可以应用叫单个目标元素,定制Attribute的各个是开玩笑的。在C#种,可拿每个Attribute都封及均等对准方括号中,也可以当有的方括号丁查封多个盖逗号分隔的Attribute。

 
 定制Attribute就是一个像样的实例,它深受序列化成驻留在第一数据中之一个字节流,在运行时,可以对元数据遭到带有的字节进行反序列化,从而筑造类的一个实例。

三.友元程序集解析

 
 扯了一半天,终于到教学“友元程序集”这一个定义,“友元程序集”在.NET2着提出,使用InternalsVisibleToAttribute来兑现即时同特征,InternalsVisibleTo只能用于程序集,并且你得于同一个顺序集种应用多次。源程序集:包含这个特性之次第集。友元程序集能够看出源程序集的保有中成员,类似于国有的。

   友元程序集实例介绍:

//AssemblySource.DLL
[assembly: InternalsVisibleTo(DotNetShare)]
public class AssemblySource
{
    public static void Share();
}


//DotNetShare.DLL
public class DotNetShare
{
    private static void Main()
    {
        AssemblySource.Share();
    }
}

   
AssemblySource.DLL和DotNetShare.DLL之间在一样种新鲜的干,但是这种关联只能单项操作。接下来看一下InternalsVisibleToAttribute的实现源码。InternalsVisibleToAttribute继承自Attribute类,该类指定通常只于时下次集中可见的型对点名程序集可见。该类包含两个属性与一个法。

   1.AssemblyName

public string AssemblyName
    {
      [__DynamicallyInvokable] get
      {
        return this._assemblyName;
      }
    }

 
 该属性为一个独念属性,一个表示友元程序集名称的字符串。该属性用于获取友元程序集的名称,采用
internal 关键字记的富有品种及花色成员对该程序集均为可见。

  2.InternalsVisibleToAttribute()

public InternalsVisibleToAttribute(string assemblyName)
    {
      this._assemblyName = assemblyName;
    }

   该措施为一个构造函数,用指定的友元程序集的名初始化 <see
cref=”T:System.Runtime.CompilerServices.InternalsVisibleToAttribute”/>
类的初实例。接收一个友元程序集的名称。

 
对于友元程序集来一个束缚,如果一个友元程序集是签的,那么源程序集为了保信任是的代码,就用指定友元程序集的公钥。

三.友元程序集解析

 
 扯了一半龙,终于到教学“友元程序集”这一个定义,“友元程序集”在.NET2饱受提出,使用InternalsVisibleToAttribute来实现即时同一特性,InternalsVisibleTo只能用于程序集,并且你可以于同一个序集种应用多次。源程序集:包含这个特性之顺序集。友元程序集能够见到源程序集的具有中成员,类似于国有的。

   友元程序集实例介绍:

//AssemblySource.DLL
[assembly: InternalsVisibleTo(DotNetShare)]
public class AssemblySource
{
    public static void Share();
}


//DotNetShare.DLL
public class DotNetShare
{
    private static void Main()
    {
        AssemblySource.Share();
    }
}

   
AssemblySource.DLL和DotNetShare.DLL之间在一样栽特别的涉及,但是这种关涉只能单项操作。接下来看一下InternalsVisibleToAttribute的实现源码。InternalsVisibleToAttribute继承自Attribute类,该类指定通常只是在现阶段程序集中可见的种类对点名程序集可见。该类包含两个属性与一个方式。

   1.AssemblyName

public string AssemblyName
    {
      [__DynamicallyInvokable] get
      {
        return this._assemblyName;
      }
    }

 
 该属性为一个才读属性,一个意味友元程序集名称的字符串。该属性用于获取友元程序集的号,采用
internal 关键字记的备项目和路成员对该程序集均为可见。

  2.InternalsVisibleToAttribute()

public InternalsVisibleToAttribute(string assemblyName)
    {
      this._assemblyName = assemblyName;
    }

   该法吧一个构造函数,用指定的友元程序集的称谓初始化 <see
cref=”T:System.Runtime.CompilerServices.InternalsVisibleToAttribute”/>
类的新实例。接收一个友元程序集的名。

 
对于友元程序集有一个羁绊,如果一个友元程序集是签约的,那么源程序集为了确保信任是的代码,就需指定友元程序集的公钥。

四.总结

 
 对于本文主要是以介绍友元程序集就同样特点,顺带介绍程序集和定制Attribute这简单独特色,方便大家知道友元程序集就等同特色。这首文章要对大家享有助,还是那句话,需者自取,也虚心接受吐槽。知识在分享,更在乎各级一个人口之思辨。

 

四.总结

 
 对于本文主要是在介绍友元程序集就同样特点,顺带介绍程序集和定制Attribute这片个特点,方便大家掌握友元程序集就无异风味。这篇稿子要对大家具有帮助,还是那么句话,需者自取,也虚心接受吐槽。知识在分享,更在各一个口之沉思。

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图