.NET 中的全局导入/使用别名

Posted

技术标签:

【中文标题】.NET 中的全局导入/使用别名【英文标题】:Global Import/using Aliasing in .NET 【发布时间】:2011-01-29 15:11:27 【问题描述】:

在一个文件/类中使用导入别名,我们可以通过分配我们自己的自定义别名来引用类库命名空间,如下所示:

' VB
Imports Db = Company.Lib.Data.Objects 

// C#
using Db = Company.Lib.Data.Objects;

然后我们可以使用我们分配的Db 别名来引用Company.Lib.Data.Objects 中的类。

是否可以在全局级别执行此操作,以便将别名应用于整个解决方案而不仅仅是一个文件/类?

目前,我们正在使用 Web 应用程序,所以我希望我们可以在 web.config 中添加一些内容,但我也对 Windows 窗体、控制台应用程序和/或类库是否可以实现这一点感兴趣。

【问题讨论】:

如果你想知道,有问题的类库有一些模糊的类命名,这给我们带来了一些烦恼。所以,我们本质上是想通过使用导入别名将它分成三个部分。我们希望在全球范围内进行,而不是将其添加到每个文件中。如果有更好的方法,我会全力以赴! 【参考方案1】:

是的,这是 VB.Net 项目中支持的方案。这样做的方法如下

在解决方案资源管理器中右键单击项目并选择属性 转到“参考”选项卡 在“导入的命名空间”字段中输入“Db=Company.Lib.Data.Objects” 点击“添加用户导入”

这将为项目中的所有文件设置别名。

但这在 C# 项目中不起作用。 C# 作为一种语言没有全局使用/导入的概念。相反,它仅在文件级别支持它们。

【讨论】:

太棒了!我们只使用 VB.NET(别笑!),这很好。但是,这适用于“网站”还是仅适用于“项​​目”? @Josh 我的大部分工作都涉及在 VB.Net IDE 上工作,所以在这里不要笑。这仅适用于 Web 应用程序。我不相信它适用于网站,因为它们没有全局构建的概念。 我们真的很喜欢在这里使用 VB.NET,所以继续努力吧!感谢您的回答,这正是我想要的。【参考方案2】:

在您网站的 web.config 文件中 - 或者很可能是项目的 app.config 文件(未确认)

    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
        <namespaces>
            <clear/>
            <add namespace="System"/>
            <add namespace="System.Collections"/>
            <add namespace="System.Collections.Specialized"/>
            <add namespace="System.Configuration"/>

您在本节中添加的任何内容都应该是代码隐藏页面顶部的 Imports 子句的有效替换。为我创造了奇迹,如果它对你有帮助,请告诉我

【讨论】:

但我需要别名...问题已经得到解答,但还是谢谢 @JoshStodola 顺便说一句,我做了一些测试,这种技术可以与别名一起使用——vis-à-vis&lt;add namespace="ColUtil = Org.Utils.CollectionUtils"/&gt; 这也适用于 C# 吗?我得试试看! @Adam,我还没试过。 这是典型的, 元素没有上下文:

以上是关于.NET 中的全局导入/使用别名的主要内容,如果未能解决你的问题,请参考以下文章

使用use操作符导入/使用别名

如何在 Kivy 语言导入中使用别名?

如何为从 .vue 中的别名导入的模块方法获取智能感知

python中pil如何导入?

万变不离核心基础第一关——导入Python模块的基本方式/为导入的模块指定别名

在 Elixir 中,为啥在导入模块时“别名”优于“导入”?