提问人:Vaccano 提问时间:8/27/2010 最后编辑:ravenVaccano 更新时间:8/6/2023 访问量:821
有没有办法将“using”指令分组到一个单独的文件中?
Is there a way to group "using" directives in a separate file?
问:
假设你有一些使用语句的样板。这样说:
#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 的文件,并将上面的代码放入其中。然后添加到我所有的单元测试文件中。这在 Delphi 中有效,但在 C# 中不起作用(我认为)。但是有没有其他方法可以获得这种类型的功能呢?using NUnitCompatability
答:
不,这是不可能的。
您可能认为指令类似于 C 语言中的 an。事实并非如此。using
#include
指令仅告诉编译器在哪些命名空间中搜索特定文件中使用的类型。因此,您也无法将它们存储在单独的文件中。using
我不会费心在我的指令代码中放置条件编译器指令。在编译时几乎没有与未使用的 s 相关的开销(搜索空间稍大),在运行时也完全没有开销。using
using
评论
C# 中没有对此的内置支持。C# 预处理器是一个非常有限的工具,不支持样式操作,在样式操作中,你可以从两个文件中创建一个文件。#include
是的,对于像这样非常简单的情况,这可能有点令人沮丧。但它超过了许多人已经做过的坏事,并将继续使用 C++ 预处理器。
如果您有一组特定的 using 语句要用于单元测试类,那么这似乎是专门为此目的制作新模板的好理由。您不局限于 VS 提供的文件类型 -- 您可以扩展它们以创建自己的文件类型,您可以在其中放置自己选择的 using 语句。在这里描述该过程需要很长时间,因此请在此处查看 MSDN:
http://msdn.microsoft.com/en-us/library/6db0hwky(v=VS.100).aspx
评论