在C#中,Java的默认(包)访问权限相当于什么?

时间:2009-08-25 18:31:13

标签: c# java unit-testing nunit access-modifiers

在C#中,Java的默认(包)访问权限相当于什么?有吗?反正是否限制对特定命名空间的访问?

问题:

我正在尝试将对某些方法的访问权限限制在我的NUnit测试中 - 在JUnit中我会通过使方法包访问并在同一个包中进行测试但在src / test / java而不是src /下执行此操作主/ JAVA。如何在C#中实现类似的东西?

注意:我不能创建方法internal,因为我的测试是在一个单独的程序集中 - 就像NUnit约定一样 - 或者是它?

4 个答案:

答案 0 :(得分:23)

C#没有包级别或命名空间级别访问权限 - 只有程序集级别 - 也称为internal访问权限。

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

您可能会发现read这篇文章和this one很有用。

答案 1 :(得分:1)

没有什么是完全相同的。 internal关键字很接近,但它受到程序集的限制,而不是名称空间。

如果某些内容被标记为内部,则只能通过同一程序集中的代码访问它(dll,exe)

答案 2 :(得分:1)

另一种方式却截然不同。你可以这样使用partial classes

  1. 文件#1 =正在测试的代码。写的与正常情况一样,但使用'部分'关键字
  2. 文件#2 =单元测试,包含一个嵌套类,它是实际的单元测试。
  3. 嵌套类可以访问其父类中的所有内容(包括私有方法)。作为构建过程的一部分(可能是MSBuild或NAnt脚本),只是不要将测试编译为最终程序集的一部分,并且测试中的代码可以正常工作。

答案 3 :(得分:0)

您可以通过将方法设置为内部

来限制方法仅在其程序集中可见
相关问题