InternalsVisibleTo与“私人保护”

时间:2017-12-01 10:19:22

标签: c# internalsvisibleto c#-7.2

新版本的.Net框架和C#提供了一个新的访问修饰符:private protected。为了访问这样的成员,该类必须

  • 驻留在同一个程序集中
  • 派生自定义类。

(与protected internal相比,满足其中一个条件就足够了)

出于测试目的,当我想从我位于不同程序集中的测试类中访问类的非公共成员时,InternalsVisibleTo属性非常方便。

private protected如何与InternalsVisibleTo属性互动?我可以从驻留在原始类派生的“朋友”程序集中的类中访问此类成员吗?

(我无法在我的机器上尝试,因为Visual Studio和C#的版本太旧了)。

2 个答案:

答案 0 :(得分:2)

到目前为止,InternalVisibleTo的文档在“备注”部分中同时提到了internalprivate protected

https://docs.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.internalsvisibletoattribute?view=netcore-2.2#remarks

答案 1 :(得分:1)

是的,从您的基类派生的友好测试程序集中的类将可以访问private protected成员。

新访问修饰符的proposal明确指出了它映射到的CLR访问说明符(protectedAndInternal),但没有说明这反过来与{{1}有何关系}。