什么是Java的默认在C#(包)访问的相同呢? 是否有一个? 反正是有限制访问特定的命名空间?
问题:
我试图限制访问某些方法只是我的NUnit的测试 - 在JUnit中我会通过使方法包访问,并且具有在同一个包,但在src / test / java下代替的src / main / java的测试做到这一点。 我怎样才能实现在C#中类似的东西?
注:我不能让这些方法internal
,因为我的测试是在单独的程序-这是NUnit的约定-或者是什么呢?
什么是Java的默认在C#(包)访问的相同呢? 是否有一个? 反正是有限制访问特定的命名空间?
问题:
我试图限制访问某些方法只是我的NUnit的测试 - 在JUnit中我会通过使方法包访问,并且具有在同一个包,但在src / test / java下代替的src / main / java的测试做到这一点。 我怎样才能实现在C#中类似的东西?
注:我不能让这些方法internal
,因为我的测试是在单独的程序-这是NUnit的约定-或者是什么呢?
C#不具有包或命名空间级别的访问-仅装配水平-其也被称为内部访问。
但是,你可以让你的方法内部和使用InternalsVisibleTo属性来揭露他们的单元测试组件。
您可能会发现它有用的阅读这篇文章, 这一个 。
没有什么那是完全等效。 该内部关键字是接近的,但它通过组装的限制,而不是命名空间。
如果某些被标记有内部,它只能通过代码相同的组件内访问(DLL,EXE)
还有另一种是完全不同的方式。 您可以使用局部类 ,像这样:
嵌套类有机会获得一切都在他们的父类(包括私有方法)。 作为您的构建过程(可能的MSBuild或楠脚本)的一部分,只是不编译测试,最后组装的一部分,该代码被测会工作得很好。
你可以限制方法,通过使它们内部只有在其组装可见