7

我很确定我知道答案,但我想知道是否有办法在我的 C# 项目中定义全局“使用”指令,这样我就不必在每个代码文件的顶部重复该指令。

我的兴趣真正源于在 .NET Framework 中引入扩展方法。使用扩展方法的唯一方法是为包含扩展方法的命名空间定义 using 指令。如果没有 using 指令,我将失去扩展方法的 Intellisense 功能,这意味着我不会总是看到哪些方法可用。

作为一名框架开发人员,确保框架中提供的类型和方法清晰且可供消费开发人员使用是我的关键。虽然文档和培训服务于它们的目的,但我发现大多数开发人员会在这段时间内滚动浏览 Intellisense 列表以查看可用的方法和属性。即使他们去对象浏览器或查看参考文档,除非他们知道扩展方法,否则他们不会知道扩展方法。这就是 Intellisense 的用武之地。

而且,虽然我可以将 using 指令添加到 VS 使用的模板中,但如果不使用扩展方法,VS 中的“删除和排序”选项将删除引用扩展方法的指令。

那么,说了这么多,有没有办法在 VS 2010 中定义全局“使用”指令?如果没有,MS 是否有可能在未来考虑它?

4

7 回答 7

6

您可以将扩展方法放置在全局命名空间中,方法是确保未在命名空间中声明包含的类。这将使它们在全球范围内可用。

至于默认命名空间 - 除了更改 VS 模板之外,这是不可能的。

当然,MS 总是有可能会考虑的。不太可能,但可能。

与其寻找技术解决方案,也许您应该着眼于教育您的开发人员并提供有关扩展方法的约定(例如,已知的位置/命名空间模式)?

于 2010-11-06T17:02:17.467 回答
0

如果它对您来说真的很重要,您可以让您的公司购买 ReSharper 并将其安装在所有开发机器上,这将为您提供这些方法的 Intellisense,并可选择“自动添加” using 指令。

据我所知(我自己没有使用它)ReSharper 扫描所有可能的程序集,我假设您可以将其配置为在创建新类时自动添加“使用”指令,尽管我对此不是 100% 确定的。

于 2010-11-07T14:45:54.323 回答
0

为了回答您的实际问题,如果您将带有扩展名的静态类放在命名空间中,它将随处可用。小心使用!

于 2010-11-06T17:12:00.607 回答
0

您可以为包含您的 using 指令的类创建 .net 文件模板。

请参阅创建项目和项模板 ( https://msdn.microsoft.com/en-us/library/ms247121.aspx )。

您可以将模板保存为您拥有扩展的项目的一部分;但是,这最好在不同的项目中完成。

于 2017-03-20T14:04:46.630 回答
0

在 C# 10 中引入了全局 using 指令。

它可以通过与local using 指令相同的方式使用,除了在它前面放置一个global关键字,以指示编译器在整个项目中访问以下指令:

global using System;

推荐的标准是将所有global using指令放在一个Usings.cs文件中,以将它们与项目的其余部分分开。

于 2022-01-10T20:49:43.300 回答
0

VS 2010没有选择的情况下,但VS 2022C# 10.0可以使用Global Usings

global using <TheNamespace>;
于 2021-08-15T17:16:56.570 回答
0

global using指令是 C# 10 中的一项新语言功能。在 .NET 6 上运行时,某些命名空间implicit global中还可以使用 using 指令。

于 2021-10-21T09:58:22.370 回答