友节点语句的范围是什么
本文关键字:范围是 是什么 范围 节点 语句 | 更新日期: 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击败了我,但正如他所说,该声明适用于汇编级别。
这对于使测试项目访问内部方法和类型非常有用:)