前言
 本文将介绍如何在其他程序集访问internal类的方法
首先我们新建一个解决方案,其中同时新建两个类库FooALibray和FooALibray,如下:

其中FooA类代码如下:
 internal class FooA {  public void Print()  {   Console.WriteLine($"I am {nameof(FooA)}");  } }然后我们在Program类调用FooA的Print方法:
 static void Main(string[] args) {  var fooA = new FooALibrary.FooA();//报错,FooA不可访问,因为它具有一定的保护级别  fooA.Print(); }那么我们怎么能够访问internal级别的FooA类呢?
InternalsVisibleToAttribute特性
 首先,我们在项目FooALibray新增->程序集信息文件,那么就获得一个初始的AssemblyInfo类了,然后我们只需新增以下代码:
[assembly: InternalsVisibleTo("InternalsVisibleToAttributeSample")]那么,之前的那段代码能够正常编译则输出:
I am FooA拓展部分
 假设FooBLibray也要访问FooA,是否还要再加入对FooBLibray程序集可见呢?答案是不用,还可以用以下方式:

将FooBLibray程序集名称改为InternalsVisibleToAttributeSample
 public class FooB {  public void PrintA()  {   new FooALibrary.FooA().Print();//编译成功  } }该黑科技是林大佬告诉我的,嘿嘿~~
总结
 我们合理的利用InternalsVisibleToAttribute程序集可见特性能够我们需要写Demo或者单元测试要引用到internal类的时候不去污染(修改成public)就能够访问它,这个特性再日常的工作流程中还是非常的好用的
原文转载:http://www.shaoqun.com/a/752801.html
张洁:https://www.ikjzd.com/w/1663
文化衫事件:https://www.ikjzd.com/w/1932
前言 本文将介绍如何在其他程序集访问internal类的方法首先我们新建一个解决方案,其中同时新建两个类库FooALibray和FooALibray,如下:其中FooA类代码如下:internalclassFooA{publicvoidPrint(){Console.WriteLine($"Iam{nameof(FooA)}");}}然后我们在Program类调用FooA的Pr
史泰博:https://www.ikjzd.com/w/2112
sgshop:https://www.ikjzd.com/w/1982
墩煌网:https://www.ikjzd.com/w/189
跟姐姐在家干坏事 姐姐叫我满足她:http://www.30bags.com/m/a/255025.html
总裁请我吃硬物 开会叫我在桌下含着不准出来:http://lady.shaoqun.com/m/a/274223.html
亚马逊受限商品规则更新:https://www.ikjzd.com/articles/114787
 
没有评论:
发表评论