• 在其他程序集访问internal类


    转载记录,原博客地址https://www.cnblogs.com/ryzen/p/14787171.html

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

    其中FooA类代码如下:

    Copy
    internal class FooA
    {
    public void Print()
    {
    Console.WriteLine($"I am {nameof(FooA)}");
    }
    }
    然后我们在Program类调用FooA的Print方法:

    Copy
    static void Main(string[] args)
    {
    var fooA = new FooALibrary.FooA();//报错,FooA不可访问,因为它具有一定的保护级别
    fooA.Print();
    }
    那么我们怎么能够访问internal级别的FooA类呢?

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

    Copy
    [assembly: InternalsVisibleTo("InternalsVisibleToAttributeSample")]
    那么,之前的那段代码能够正常编译则输出:

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

    将FooBLibray程序集名称改为InternalsVisibleToAttributeSample

    Copy
    public class FooB
    {
    public void PrintA()
    {
    new FooALibrary.FooA().Print();//编译成功
    }
    }
    该黑科技是林大佬告诉我的,嘿嘿~~

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

    没有标记转载的情况下,如果有更好的优化麻烦电邮1808937496@qq.com或者留言答复,Thank You
  • 相关阅读:
    Codeforces Round #411 (Div. 2)
    腾讯比赛资料
    AtCoder Beginner Contest 060
    hdu 5288 数学 ****
    hdu 1866 几个矩形面积的和 ***
    hdu 2232 矩阵 ***
    bzoj 1415 期望+记忆化搜索 ****
    hdu 5033 单调栈 ****
    hdu 3032 sg打表找规律 *
    hdu 2516 FIB博弈
  • 原文地址:https://www.cnblogs.com/wandia/p/14804517.html
Copyright © 2020-2023  润新知