DotNet友元程序集解析

来源:http://www.goldns.net 作者:澳门新葡亰娱乐场 人气:195 发布时间:2019-11-26
摘要:  项目支出的长河中,调试使用的可能是最多的操作。任何代码写出来都须要经过调节和测量试验和构成,以此扩张和进级程序的安澜和可信性。聊到.NET的单元测验,在此边就得提提

   项目支出的长河中,调试使用的可能是最多的操作。任何代码写出来都须要经过调节和测量试验和构成,以此扩张和进级程序的安澜和可信性。聊到.NET的单元测验,在此边就得提提.NET的友元程序集这一表征,也借用.NET举行单元测量试验的二个相比较好用的.NET属性,来上课一下程序集、定制Attribute的相关文化。一些知识必要频仍的去尝试和反思,不要感到您会了就忽略,等你注意的时候,你就有个别无计可施的情趣了。

   生活在于不停的折磨,独有因而历练,才可以看见什么时候要求安分,何时需求挑战。

   毒鸡汤喝完了,来聊聊正事...

生龙活虎.程序集概述

  本文首借使研商“友元程序集”的风姿浪漫部分知识,既然是做三个剖判,那么就应当把生机勃勃部分学问做叁个开展来阐释。在那地先谈谈程序集(有人以为很领会,有人以为完全不懂,景况非常的小器晚成,接纳不一致,需者自取吧卡塔 尔(英语:State of Qatar),接下去大家切实的看看程序集这意气风发特色。

  程序集是三个或八个模块/能源文件的逻辑分组,程序集是采取、安全性以至版本调整的小小单元。对于程序集的布局犹如下图。

图片 1

图片 2

    对于程序集的组成就十分小器晚成生龙活虎做剖判,在这里地就独自谈谈元数据那风流罗曼蒂克结构。元数据是贰个二进制数据块,由风姿洒脱组数据表,元数据连接与含蓄IL代码的文本涉及,元数据由多少个表组成。元数据的机能有上海体育场所介绍。元数据的表有多少个体系:定义表,引用表,项目清单表。对于那一个表的构造在那间就不做牵线了,有乐趣的能够查找一下,个人感到元数据那生龙活虎布局应当好好的钻研一下。

二.定制Attribute概述

   上边的论述中简单的介绍了前后相继集的构造和元数据,在此差非常少的介绍一下定制Attribute那风流倜傥.NET的表征。定制Attribute允许定义的消息使用于大约各样元数据表记录项,这种可扩张的元数据音讯能在运作时查询,进而动态改造代码的推行办法。在C#种,为了将多少个定制Attribute应用于三个对象成分,供给将Attribute放置于目的成分前边的生龙活虎对方括号中。

   CLHighlander允许将定制Attribute应用于可在文书的元数据中意味着的差不离具备因素。定制Attribute重要运用于程序集、模块、类型、字段、方法、方法参数、方法重回值、属性、事件、泛型类型参数。attribute是类的一个实例,将二个attribute应用于三个对象成分时,语法相近于调用类的某部实例构造函数。定制Attribute的实比如下:

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

    上边代码取自InternalsVisibleToAttribute类中,该类是成就友元程序集天性的中坚目的,下边会做二个切实可行的牵线。AttributeUsage供给经受一个AttributeTargets枚举类型的值作为参数,称之为定位参数,是强制性的,必需钦定。AllowMultiple参数用于获取或安装三个布尔值,提醒是还是不是有八个实例内定的属性可以为单个程序元素钦定。Inherited参数用于获取或安装叁个布尔值,提示钦赐的性质是或不是足以继续由派生类和重写成员。

   定制Attribute能够利用于单个指标成分,定制Attribute的相继是不值生机勃勃提的。在C#种,可将每种Attribute都密封到豆蔻梢头对方括号中,也得以在乎气风发部分方括号中查封多个以逗号分隔的Attribute。

   定制Attribute正是二个类的实例,它被种类化成驻留在元数据中的多个字节流,在运作时,能够对元数据中满含的字节进行反连串化,从而构造类的叁个实例。

三.友元程序集剖判

   扯了半天,终于到传授“友元程序集”那三个概念,“友元程序集”在.NET第22中学建议,使用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这两日性子,方便大家领略友元程序集那大器晚成特色。那篇随笔希望对大家有所支持,依然那句话,需者自取,也谦虚选用调侃。知识在于共享,更留意每壹人的观念。

 

本文由澳门新葡亰娱乐场发布于澳门新葡亰娱乐场,转载请注明出处:DotNet友元程序集解析

关键词:

上一篇:不导出隐藏列的方法

下一篇:没有了

频道精选

最火资讯