【问题标题】:C#: How to create "aliases" for classesC#:如何为类创建“别名”
【发布时间】:2011-08-16 17:18:49
【问题描述】:

我什至不知道它是否被称为别名,但还是让我继续吧。

您知道 C# 中的 System.String 类型是如何与“字符串”“别名”的吗?在 Visual Studio 中,“字符串”为小写和蓝色文本。我想对我们的一些冗长的类名这样做。有些都像“RelocatedPlantProductReleaseItem”。改不了名字了,但是这么长的名字真的让代码啰嗦了。我希望能够改用“Rppr”。所以不要这样:

RelocatedPlantProductReleaseItem Item = new RelocatedPlantProductReleaseItem();

我想:

Rppr Item = new Rppr();

我知道我可以创建一个名为 Rppr 的类并让它从 RelocatedPlantProductReleaseItem 继承,但这似乎很老套。

另外,我上面给出的场景完全是虚构的。我只是用它来演示我想要实现的基本功能。

另外,当“string”代表 System.String 时,技术上叫什么?

我希望这是一个全球性的事情。我不想在每个代码文件的顶部指定它。我想在一个地方指定它,它可以在整个应用程序中的任何地方工作,即使在引用其程序集的其他程序集中也是如此。

【问题讨论】:

标签: c# alias


【解决方案1】:

使用 using 指令

using Rppr = Namespace.To.RelocatedPlantProductReleaseItem;

EDIT Op 澄清要求全球解决方案。

在 C# 中没有 typedef 样式等效项可以创建类型名称的全局替换。您需要在每个想要使用此缩写的文件中使用 using 指令,或者使用名称的长版本。

【讨论】:

    【解决方案2】:

    string 是 C# 语言提供的方便引用实际 CLR 类型 System.String

    您可以使用using 指令获得类似的结果。在您希望缩短名称的文件顶部,添加以下行:

    using ShortName = Namespace.ReallyLongClassNameGoesHereOhGodWhy;
    

    那你可以说ShortName myVar = new ShortName();

    请注意,您必须针对每个文件执行此操作。您无法通过单一声明获得与 string 相同的覆盖范围。

    【讨论】:

      【解决方案3】:

      试试

      using Rppr = SomeNamespace.RelocatedPlantProductReleaseItem;
      

      Reference

      【讨论】:

        【解决方案4】:

        你可以这样做:

        using Rppr = RelocatedPlantProductReleaseItem;
        

        【讨论】:

          【解决方案5】:

          您使用以下方法创建别名:

          using alias = LongClassName;
          

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

          【讨论】:

            【解决方案6】:

            您可以在文件顶部添加using 指令:

             using Rppr = MyProjectNs.RelocatedPlantProductReleaseItem;
            

            但它(仅)适用于每个文件,而不适用于项目。

            【讨论】:

              【解决方案7】:

              尝试将以下内容与您的其他用途一起添加

              using Rppr = YourItemsNamespace.RelocatedPlantProductReleaseItem;
              

              【讨论】:

                【解决方案8】:

                从 C#10 开始,现在可以使用 global modifier 全局执行此操作。

                global using Rppr = Namespace.To.RelocatedPlantProductReleaseItem;
                

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

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2021-03-03
                  • 2020-02-04
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-11-14
                  • 2011-02-07
                  • 2016-10-25
                  相关资源
                  最近更新 更多