友节点语句的范围是什么

本文关键字:范围是 是什么 范围 节点 语句 | 更新日期: 2023-09-27 18:31:08

友元程序集语句的范围是什么?

例:

A.cs
[assembly: InternalVisibleTo("Friend")]
internal class A { ... }
B.cs
internal class B { ... }

名为"朋友"的程序集是否可以访问类B

范围是整个项目吗(甚至汇编语句也只设置在一个类中)?

友节点语句的范围是什么

该属性不应用于类,这是因为关键字 assembly: 位于它之前。这意味着该属性将应用于整个程序集。

正如您在 MSDN 页面上看到的。属性的声明指定它只能应用于程序集。因此,使程序集中的每个内部对"朋友"程序集可见。

可以使用 InternalsVisibleToAttribute 属性来标识给定程序集的一个或多个友元程序集。下面的示例使用程序集 A 中的 InternalsVisibleToAttribute 属性,并将程序集 AssemblyB 指定为友元程序集。这使程序集 AssemblyB 能够访问程序集 A 中标记为"友元"(Visual Basic) 或内部 (C#) 的所有类型和成员。

取自 msdn

您可以看到InternalsVisibleToAttribute定义如下。请注意,AttributeTargets只允许assembly不允许Types

[AttributeUsageAttribute(AttributeTargets.Assembly, AllowMultiple = true, Inherited = false)]
public sealed class InternalsVisibleToAttribute : Attribute

将此属性放置在何处并不重要,它使程序集中内部的所有类型对友元程序集可见。

B 将可供您的朋友程序集访问。 SynerCoder击败了我,但正如他所说,该声明适用于汇编级别。

这对于使测试项目访问内部方法和类型非常有用:)