Java的等价物是什么;C#中的默认(包)访问权限?

Java的等价物是什么;C#中的默认(包)访问权限?,c#,java,unit-testing,nunit,access-modifiers,C#,Java,Unit Testing,Nunit,Access Modifiers,在C#中,Java默认(包)访问的等价物是什么?有吗?是否存在限制对特定命名空间的访问的方法 问题: 我试图将对某些方法的访问限制为仅对NUnit测试的访问—在JUnit中,我将通过使方法包访问并使测试在同一个包中,但在src/test/java而不是src/main/java下进行。如何在C#中实现类似的功能 注意:我不能将方法设置为内部,因为我的测试在一个单独的程序集中-就像NUnit约定一样-或者是?C#没有包或名称空间级别的访问-只有程序集级别的访问-这也称为访问 但是,可以将方法设置为

在C#中,Java默认(包)访问的等价物是什么?有吗?是否存在限制对特定命名空间的访问的方法

问题:

我试图将对某些方法的访问限制为仅对NUnit测试的访问—在JUnit中,我将通过使方法包访问并使测试在同一个包中,但在src/test/java而不是src/main/java下进行。如何在C#中实现类似的功能

注意:我不能将方法
设置为内部
,因为我的测试在一个单独的程序集中-就像NUnit约定一样-或者是?

C#没有包或名称空间级别的访问-只有程序集级别的访问-这也称为访问

但是,可以将方法设置为内部方法,并使用该属性将其公开给单元测试程序集


你可能会发现它对这篇文章很有用。

没有什么是完全等效的。关键字是close,但它受程序集而不是命名空间的限制


如果某个对象被标记为internal,则只能通过同一程序集(dll,exe)中的代码访问该对象。

您可以通过将这些方法设置为internal,从而将它们限制为仅在其程序集中可见。

还有另一种截然不同的方法。您可以这样使用:

  • 文件#1=测试中的代码。写的和普通的一样,但是带有'partial'关键字
  • 文件#2=单元测试,包含实际单元测试的嵌套类

  • 嵌套类可以访问其父类中的所有内容(包括私有方法)。作为构建过程的一部分(可能是MSBuild或NAnt脚本),只需将测试作为最终程序集的一部分进行编译,测试中的代码就可以正常工作。

    …或者通过使用InternalsVisibleTo显式授予访问内部项权限的其他程序集中的代码进行编译。