C#: 如何为类创建“别名”

13

虽然我不确定它是否被称为别名,但让我继续。

您知道在C#中System.String类型是与“string”有点“别名”吗?在Visual Studio中,“string”以小写和蓝色文本显示。我想对我们一些冗长的类名做同样的事情。例如,“RelocatedPlantProductReleaseItem”。我不能更改它的名称,但这样一个很长的名称真的使代码变得啰嗦。我想能够使用“Rppr”代替。所以,我会用这个:

Rppr Item = new Rppr();

而不是这个:

RelocatedPlantProductReleaseItem Item = new RelocatedPlantProductReleaseItem();

我知道我可以创建一个名为Rppr的类,并使其继承自RelocatedPlantProductReleaseItem,但那似乎有点hacky。

顺便说一下,上面给出的场景完全是虚构的。我只是用它来演示我试图实现的基本功能。

当“string”表示System.String时,技术上它被称为什么?

我希望这是一种全局方法。我不想在每个代码文件的顶部指定它。我想在一个地方指定它,并且它可以在整个应用程序中的任何地方工作,甚至在引用其程序集的其他程序集中也可以。


请参考此链接:https://dev59.com/eHVC5IYBdhLWcg3wlyQo - Matthieu
8个回答

37

使用using指令

using Rppr = Namespace.To.RelocatedPlantProductReleaseItem;

编辑:问题已经澄清为需要全局解决方案。

C#中没有typedef风格的等效物,可以创建类型名称的全局替换。您需要在每个文件中使用using指令来缩写类型名称,或者使用完整的类型名称。


7

string是C#语言为了方便而提供的一个引用实际CLR类型System.String的方式。

你也可以通过添加using指令来达到类似的效果。在你想要缩短名称的文件顶部添加以下代码:

using ShortName = Namespace.ReallyLongClassNameGoesHereOhGodWhy;

然后你可以这样说:ShortName myVar = new ShortName();

请注意,您需要在每个文件中执行此操作。您不能通过单个声明获得与 string 相同的覆盖范围。


4

尝试

using Rppr = SomeNamespace.RelocatedPlantProductReleaseItem;

Reference


2
你可以这样做:
using Rppr = RelocatedPlantProductReleaseItem;

1

您可以使用以下命令创建别名:

using alias = LongClassName;

该别名在您声明它的命名空间中可见。


1
你可以在文件顶部添加一个 using 指令:
 using Rppr = MyProjectNs.RelocatedPlantProductReleaseItem;

但它只适用于单个文件,而不适用于整个项目。


0

尝试将以下内容与其他“using”语句一起添加

using Rppr = YourItemsNamespace.RelocatedPlantProductReleaseItem;

0
从C#10开始,现在可以通过使用{{link1:global修饰符}}来全局执行此操作。
global using Rppr = Namespace.To.RelocatedPlantProductReleaseItem;

这可以添加到编译中的任何文件中,然后应用于所有其他文件,但必须在没有 global 修饰符的任何 using 指令之前添加。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接