如何重命名类型/类,或为其指定别名?

Jea*_*e R 0 c#

例如在我的代码中我想要MyUser别名Dictionary<string,string>

我试过

Type MyUser =typeof(Dictionnary<string,string>);
MyUser user;
Run Code Online (Sandbox Code Playgroud)

但这不起作用。

感谢您的关注。

Mat*_*son 5

从 C# 10 开始,您已经能够在将用于整个项目的文件中定义“全局使用” 。

按照惯例,该文件的名称是“GlobalUsings.cs”,但您可以为其指定任何名称。

对于您的具体示例,如果您想MyUser成为Dictionary<string,string>整个项目的别名,请创建一个包含以下内容的“GlobalUsings.cs”文件:

global using MyUser = System.Collections.Generic.Dictionary<string, string>;
Run Code Online (Sandbox Code Playgroud)

根据各种评论,这可能不是一个好主意:

  1. 类型别名在当前项目之外不可见;任何使用类型别名的内容都将被视为程序集外部的原始无别名类型。
  2. 仅仅为除泛型使用的类型之外的任何内容声明别名而不是正确的类,将导致无法正确封装该类型的逻辑。
  3. 在您的具体示例中,MyUser似乎是一个坏名字Dictionary<string, string>。如果没有进一步的信息,我们真的无法对此说得更多。

  • 这是一个很好的答案,但我认为你应该补充一点,原来的问题是这样解决的(所以技术上是可以做到的),但可能被认为是不好的做法(在这种情况下) (2认同)
  • 如果没有 OP 关于他们打算如何使用这种类型的更多细节,很难在这里说。我只使用全局 using 作为别名有两个原因:作为各种常用类型的简写(例如“StringDictionary”)和出于文档目的(例如“global using Millimeters = System.Double;”,这意味着诸如“ double MeasureItem(Item item)` 可以是 `Millimeters MeasureItem(Item item)` ,当然,它更具自记录性。但通常仅适用于“内部”项目,因为全局使用是每个项目的。 (2认同)