C# 友元汇编语句的范围是什么?
友元汇编语句的范围是什么 例如:C# 友元汇编语句的范围是什么?,c#,.net-assembly,internal,C#,.net Assembly,Internal,友元汇编语句的范围是什么 例如: A.cs [assembly: InternalVisibleTo("Friend")] internal class A { ... } B.cs internal class B { ... } 名为“Friend”的程序集是否可以访问类B 整个项目的范围(即使是汇编语句也只在一个类中设置)?该属性不应用于该类,这是因为关键字assembly:位于它前面。这意味着该属性将应用于整个程序集 正如你在页面上看到的。该属性的声明指定它只能应用于程序集。因此,使
A.cs
[assembly: InternalVisibleTo("Friend")]
internal class A { ... }
B.cs
internal class B { ... }
名为“Friend”的程序集是否可以访问类B
整个项目的范围(即使是汇编语句也只在一个类中设置)?该属性不应用于该类,这是因为关键字
assembly:
位于它前面。这意味着该属性将应用于整个程序集
正如你在页面上看到的。该属性的声明指定它只能应用于程序集。因此,使程序集中的每个内部元素对“朋友”程序集可见。该属性不应用于类,这是因为关键字
assembly:
位于它前面。这意味着该属性将应用于整个程序集
正如你在页面上看到的。该属性的声明指定它只能应用于程序集。因此,使程序集中的每个内部对象对“朋友”程序集可见
您可以使用InternalsVisibleToAttribute属性来标识给定程序集的一个或多个好友程序集。以下示例使用程序集A中的InternalsVisibleToAttribute属性,并将程序集AssemblyB指定为友元程序集。这使程序集assembly B可以访问程序集A中标记为Friend(Visual Basic)或internal(C#)的所有类型和成员
取自
您可以看到内部可视属性的定义如下。注意AttributeTargets
仅允许程序集
而不允许类型
[AttributeUsageAttribute(AttributeTargets.Assembly, AllowMultiple = true, Inherited = false)]
public sealed class InternalsVisibleToAttribute : Attribute
无论您将此属性放置在何处,它都会使程序集中的所有内部类型对朋友程序集可见
您可以使用InternalsVisibleToAttribute属性来标识给定程序集的一个或多个好友程序集。以下示例使用程序集A中的InternalsVisibleToAttribute属性,并将程序集AssemblyB指定为友元程序集。这使程序集assembly B可以访问程序集A中标记为Friend(Visual Basic)或internal(C#)的所有类型和成员
取自
您可以看到内部可视属性的定义如下。注意AttributeTargets
仅允许程序集
而不允许类型
[AttributeUsageAttribute(AttributeTargets.Assembly, AllowMultiple = true, Inherited = false)]
public sealed class InternalsVisibleToAttribute : Attribute
无论您将此属性放置在何处,它都会使程序集中的所有内部类型对朋友程序集可见。B将可供朋友程序集访问。SynerCoder击败了我,但正如他所说,该声明适用于汇编级别
这对于让您的测试项目访问您的内部方法和类型非常有用:)B将可供您的朋友程序集访问。SynerCoder击败了我,但正如他所说,该声明适用于汇编级别
这对于让您的测试项目访问您的内部方法和类型非常有用:)谢谢。项目中是否有放置汇编语句的典型位置/最佳实践?@JohnThreepwood我通常将其与其他汇编属性放在一起:/Properties/AssemblyInfo.cs
@JohnThreepwoodAssemblyInfo.cs
包含从设置对话框自动填充的所有属性。啊,是的,这是有意义的。非常感谢。非常感谢。项目中是否有放置汇编语句的典型位置/最佳实践?@JohnThreepwood我通常将其与其他汇编属性放在一起:/Properties/AssemblyInfo.cs
@JohnThreepwoodAssemblyInfo.cs
包含从设置对话框自动填充的所有属性。啊,是的,这是有意义的。非常感谢。谢谢,这有助于理解。谢谢,这有助于理解。