C# internal 访问修饰符的定义是 internal:只能在包含程序集或友元程序集内访问。所以我的问题是什么是 c# 汇编?在包含程序集或朋友程序集内是什么意思?这是否意味着在同一个命名空间或项目中?
4 回答
程序集(通常)是单个.dll
或.exe
文件。
AC# 项目(通常)编译为单个程序集。
[assembly: InternalsVisibleTo(...)]
您可以使用该属性标记朋友程序集。
程序集是IL
带有manifest
信息的代码(如果是.NET
),可以是DLL
或EXE
。这样,使用manifest
信息,一个程序集可以声明为另一个程序集的朋友,因此internal
也可以访问数据类型。
通过使用属性[assembly: InternalsVisibleTo..]
标记到程序集指定信息的清单中,
程序集包含中间代码、资源和自身的元数据。我们可以使用作为 Visual Studio 一部分提供的 ildasm(中间语言反汇编器)工具查看程序集的内部。要访问它,您需要打开 Visual Studio 命令提示符并键入 ildasm.exe。这将启动一个 Windows 应用程序,您可以使用它来探索任何 .Net 应用程序。
朋友程序集是可以访问另一个程序集的朋友 (Visual Basic) 或内部 (C#) 类型和成员的程序集。如果您将程序集标识为朋友程序集,则不再需要将类型和成员标记为公共以便其他程序集可以访问它们。这在以下场景中特别方便:
在单元测试期间,当测试代码在单独的程序集中运行但需要访问被测试程序集中标记为朋友 (Visual Basic) 或内部 (C#) 的成员时。
在开发类库时,对库的添加包含在单独的程序集中,但需要访问标记为 Friend (Visual Basic) 或 internal (C#) 的现有程序集中的成员。