如何在Unity中全局为类创建别名?

时间:2019-08-03 20:09:14

标签: c# unity3d

现在,我正在使用“字符串”来枚举字符上的设备插槽列表。 我还使用“字符串”来枚举该项目可以配备的类类型。

这使得我获取,删除,生成等所有项目的方法都涉及到两个字符串参数,分别是设备插槽和类类型。

我真正想要的是使用2个类,以便为slot和class_type有2个强类型化的概念。

问题在于字符串是一个密封的类,因此我无法扩展它!

我构想的一个解决方案是使用“ using SlotType = string;”作为别名,但我不知道如何在全球范围内进行这项工作。

如何为类定义全局别名?

1 个答案:

答案 0 :(得分:3)

在C#中,您可以使用“ using”创建类型别名。 Because obviously that term needed a 3rd meanings in C#;)但是,“ using指令的范围仅限于它所在的文件。”,因此它不适用于全局。

还有另一个选择-创建一个子类。例如,

public class ListOfIntegers : List<int>{
  //Nothing to do here.
}

将为您提供List<int>的排序别名,该别名适用于ListOfIntegers作为项目参考提供的任何地方。

对于无法扩展的内容:只需封装它即可。

public class TypedString1 {
  public value;
}

public class TypedString2 {
  public value;
}

但是您可能需要进行设置,以便将字符串重载用于Equality和ToString调用之类的东西。还可以将其隐式转换为字符串,以使其易于使用。