C#.NET其他程序集访问Internal类-C/S开发框架

前言
本文将介绍如何在其他程序集访问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)就能够访问它,这个特性再日常的工作流程中还是非常的好用的
参考文档:
.NET C/S架构软件用户授权设计方案(mac地址+白名单用户)|C/S开发框架
C# .NET 入门概念与知识点总结|C/S开发框架
C#/.NET 基础学习|C/S开发框架
C#.NET 6 实现全局异常处理-C/S开发框架
C# 利用ZXing.Net来生成条形码和二维码-C/S开发框架
C#.NET理解Task和async await原理-C/S开发框架
FastReport.NET自动文本宽度+自动换行+自动行高|C/S开发框架
FastReport.NET2023破解版去除水印DEMO VERSION (2025.1.14/2023.2.18版本)|C/S开发框架
C/S软件授权注册系统V3.0(Winform+WebApi+.NET8+EFCore版本)|C/S开发框架
企业级C/S系统快速开发框架(Winform+.NET8+EFCore)|C/S开发框架
.NETCore WebApi运行报错:System.AggregateException:“Some services are not able to be constructed|C/S开发框架
C#.NET各版本常用语法糖大全(C#3~C#10)|C/S开发框架
CSFramework.EF数据库框架应用Schema测试多种数据库(.NET8+EFCore)|C/S开发框架
CSFrameworV6试用版开发指南 | 主程序初始化CSFramework.EF数据库框架(.NET8)|C/S开发框架
.NET Reactor(.NET混淆器)加壳软件使用|C/S开发框架
CSFramework开发框架使用.NET Reactor加壳软件导致多语言失效|C/S开发框架
.NET C/S架构软件用户授权设计方案(mac地址+白名单用户)|C/S开发框架
C# .NET 入门概念与知识点总结|C/S开发框架
C#/.NET 基础学习|C/S开发框架
C#.NET 6 实现全局异常处理-C/S开发框架
C# 利用ZXing.Net来生成条形码和二维码-C/S开发框架
C#.NET理解Task和async await原理-C/S开发框架
FastReport.NET自动文本宽度+自动换行+自动行高|C/S开发框架
FastReport.NET2023破解版去除水印DEMO VERSION (2025.1.14/2023.2.18版本)|C/S开发框架
C/S软件授权注册系统V3.0(Winform+WebApi+.NET8+EFCore版本)|C/S开发框架
企业级C/S系统快速开发框架(Winform+.NET8+EFCore)|C/S开发框架
.NETCore WebApi运行报错:System.AggregateException:“Some services are not able to be constructed|C/S开发框架
C#.NET各版本常用语法糖大全(C#3~C#10)|C/S开发框架
CSFramework.EF数据库框架应用Schema测试多种数据库(.NET8+EFCore)|C/S开发框架
CSFrameworV6试用版开发指南 | 主程序初始化CSFramework.EF数据库框架(.NET8)|C/S开发框架
.NET Reactor(.NET混淆器)加壳软件使用|C/S开发框架
CSFramework开发框架使用.NET Reactor加壳软件导致多语言失效|C/S开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
