读经典——《CLR via C#》(Jeffrey Richter著) 笔记_友元程序集

【应用场景】

程序集A访问程序集B定义的Internal访问类型的类的成员。

【使用方式】

在构建程序集B的时候,引入System.Runtime.CompilerServices,以此来添加InternalsVisibleTo attribute

【例子】

程序集B——

using System;
using System.Runtime.CompilerServices;//为了InternalsVisibleTo 属性

//当前程序集中internal类型可由以下程序集中
//的任何代码访问(不管什么版本或语言文化)
[assembly:InternalsVisibleTo("程序集A的名字,PublicKey=1234...")]
internal sealed class SomeInternalType{...}

程序集A——

using System;
internal sealed class Foo 
{
  private static Object SomeMethod()
 {
    //这个程序集A能访问另一个程序集中的internal类型,
    //就好像那是一个public类型一样
    SomeInternalType sit = new SomeInternalType();
    return sit;
  }
}

【注意】

在添加InternalsVisibleTo attribute的时候不要指定版本号,语言文化和处理器架构

原文地址:https://www.cnblogs.com/lishidefengchen/p/4532684.html