C# Access Modifiers
Access Modifiers (C# Programming Guide)
modifier | scope |
---|---|
public | 任何地方 |
private | 同一 class/struct |
protected | 同一 class/struct,以及 derived class |
internal | 同一 assembly |
protected internal | 同一 assembly,以及其它 assembly 内的 derived class。 |
classes, structs 可以使用 public, internal。默认是 internal。
nested classes/structs 是 classes/structs 的成员,和其它成员一样,默认是 private。
structs 不能继承,所以它的成员不可以使用 protected, protected internal。
代码规范,access modifiers 写在最开始,最好不要省略 private。
friend assembly
https://msdn.microsoft.com/en-us/library/mt632254
借助于 InternalsVisibleToAttribute,AssemblyB 可以测试 AssemblyA 中的 internal classes/members。
using System.Runtime.CompilerServices;
using System;
[assembly: InternalsVisibleTo("AssemblyB")]
// The class is internal by default.
class FriendClass
{
public void Test()
{
Console.WriteLine("Sample Class");
}
}
// Public class that has an internal method.
public class ClassWithFriendMethod
{
internal void Test()
{
Console.WriteLine("Sample Method");
}
}