有没有办法将“using”指令分组到单独的文件中?

问题描述 投票:0回答:4

假设您有一些使用语句的样板。说这样的话:

#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# 中不行(我认为)。但是还有其他方法可以实现这种类型的功能吗?

c# using using-directives
4个回答
4
投票

不,这是不可能的。

您可能认为

using
指令就好像它们类似于 C 中的
#include
。但事实并非如此。

using
指令仅告诉编译器在哪些命名空间中搜索特定文件中使用的类型。因此您也无法将它们存储在单独的文件中。

我不会费心将条件编译器指令放入我的代码中以用于

using
指令。编译时几乎没有与未使用的
using
相关的开销(搜索空间稍大),并且在运行时根本没有开销


2
投票
C# 中没有对此的内置支持。 C# 预处理器有意成为一种非常有限的工具,并且不支持

#include

 风格的操作,您可以在其中将两个文件分成一个文件。 

是的,对于像这样非常简单的情况,可能会有点令人沮丧。但它比许多人使用 C++ 预处理器所做的和继续做的恶事更重要。


2
投票
如果您有一组特定的 using 语句想要用于单元测试类,那么这似乎是专门为此目的制作新模板的好理由。您不限于 VS 提供的文件类型——您可以扩展它们以创建您自己的文件类型,您可以在其中放置您自己选择的 using 语句。在这里描述这个过程会花费太长的时间,所以请查看 MSDN:

http://msdn.microsoft.com/en-us/library/6db0hwky(v=VS.100).aspx


0
投票
在 C# 10 及更高版本中,您可以使用全局 using 指令:

https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/using-directive#global-modifier

© www.soinside.com 2019 - 2024. All rights reserved.