前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在其他程序集访问internal类

在其他程序集访问internal类

作者头像
ryzenWzd
发布2021-05-21 10:49:16
1.3K0
发布2021-05-21 10:49:16
举报
文章被收录于专栏:WPF

前言

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

其中FooA类代码如下:

代码语言:javascript
复制
   internal class FooA
    {
        public void Print()
        {
            Console.WriteLine($"I am {nameof(FooA)}");
        }
    }

然后我们在Program类调用FooAPrint方法:

代码语言:javascript
复制
   static void Main(string[] args)
   {
        var fooA = new FooALibrary.FooA();//报错,FooA不可访问,因为它具有一定的保护级别
        fooA.Print();
   }

那么我们怎么能够访问internal级别的FooA类呢?

InternalsVisibleToAttribute特性

 首先,我们在项目FooALibray新增->程序集信息文件,那么就获得一个初始的AssemblyInfo类了,然后我们只需新增以下代码:

代码语言:javascript
复制
[assembly: InternalsVisibleTo("InternalsVisibleToAttributeSample")]

那么,之前的那段代码能够正常编译则输出:

代码语言:javascript
复制
I am FooA

拓展部分

 假设FooBLibray也要访问FooA,是否还要再加入对FooBLibray程序集可见呢?答案是不用,还可以用以下方式:

FooBLibray程序集名称改为InternalsVisibleToAttributeSample

代码语言:javascript
复制
   public class FooB
    {
        public void PrintA()
        {
            new FooALibrary.FooA().Print();//编译成功
        }
    }

该黑科技是林大佬告诉我的,嘿嘿~~

总结

 我们合理的利用InternalsVisibleToAttribute程序集可见特性能够我们需要写Demo或者单元测试要引用到internal类的时候不去污染(修改成public)就能够访问它,这个特性再日常的工作流程中还是非常的好用的

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-05-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • InternalsVisibleToAttribute特性
  • 拓展部分
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档