假设您有一些使用语句的样板。说这样的话:
#if !NUNIT
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Category = Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute;
#else
using NUnit.Framework;
using TestClass = NUnit.Framework.TestFixtureAttribute;
using TestMethod = NUnit.Framework.TestAttribute;
using TestInitialize = NUnit.Framework.SetUpAttribute;
using TestCleanup = NUnit.Framework.TearDownAttribute;
using TestContext = System.Object;
#endif
(这是我的单元测试代码)如果我不想将其放在每个具有单元测试的文件的顶部,有没有办法在这里设置间接级别?
我认为这行不通,但这是我的想法的一个例子:
创建一个名为 NUnitCompatability.cs 的文件并将上述代码放入其中。然后将
using NUnitCompatability
添加到我的所有单元测试文件中。这在 Delphi 中可行,但在 C# 中不行(我认为)。但是还有其他方法可以实现这种类型的功能吗?
不,这是不可能的。
您可能认为
using
指令就好像它们类似于 C 中的 #include
。但事实并非如此。
using
指令仅告诉编译器在哪些命名空间中搜索特定文件中使用的类型。因此您也无法将它们存储在单独的文件中。
我不会费心将条件编译器指令放入我的代码中以用于
using
指令。编译时几乎没有与未使用的using
相关的开销(搜索空间稍大),并且在运行时根本没有开销。
#include
风格的操作,您可以在其中将两个文件分成一个文件。是的,对于像这样非常简单的情况,可能会有点令人沮丧。但它比许多人使用 C++ 预处理器所做的和继续做的恶事更重要。