我可以为我自己的类定义C#别名/关键字,如int,string,object吗?

Bit*_*lue 6 c# alias types visual-studio

不是关于using foo = MyPackage.Foo;

我意识到这更多地与IDE(Visual Studio 2010)有关,它向我展示了蓝色的特殊类型.我想我的一些课程.我希望它是蓝色的 (呈现为特殊的)并且可以在整个项目中访问.

原因是我想给他们意义/重要性,以便我的团队中的每个人都知道这个课程是整个项目的关键课程.

// "foo" and "Foo" shall be just the same type:
foo:     MyPackage.Foo

object:  System.Object
string:  System.String
bool:    System.Boolean
byte:    System.Byte
sbyte:   System.SByte
short:   System.Int16
ushort:  System.UInt16
int:     System.Int32
uint:    System.UInt32
long:    System.Int64
ulong:   System.UInt64
float:   System.Single
double:  System.Double
decimal: System.Decimal
char:    System.Char
Run Code Online (Sandbox Code Playgroud)

那可能吗 ?如果我的IDE安装中有一个文件,里面会有上面的关键字,我可以添加一些关键字并保存并重新启动IDE?

要有两个班级,我可以这样做.这是同一个班级的两个名字.我知道我需要在这些之间施展.

public class foo : Foo
{ }
Run Code Online (Sandbox Code Playgroud)

rae*_*ae1 5

如果要为此类定义关键字(如intvoid),则C#支持该关键字.关键字是预定义的,保留的标识符,只有对编译器的更改才能实现您的意图.

最接近的方法是指定类/名称空间别名,如@SonerGönül所示.但是,由于这适用于单个文件,因此您必须在每个项目文件中预先包含它,如本文所述.

现在,关键字由IDE着色,基于它们关键字的事实(在某种意义上它们被列在IDE的语法高亮引擎中作为C#语言的关键字).根据您使用的IDE,您可能可以为该类添加标识符,使其看起来像关键字.但是,您仍然需要在每个文件中为其导入别名,否则编译器将无法识别它.


rse*_*nna 3

您的问题似乎是关于两个不同的要求:

  1. 定义一个“全局”符号/类,随处可用。
  2. 为该符号应用不同的颜色(即语法突出显示)。

1)不直接可能。在这种情况下,您可以做的是提供包含该类的程序集,并强制您的团队使用它。您甚至可以使用静态分析工具并触发一些编译错误(例如,如果未引用该程序集)。

2)这更难实现。在 Visual Studio 中自定义 C# 的默认语法着色机制是可能的,但绝对容易。

Visual Studio 通过Language Service支持给定语言(具有语法突出显示、IntelliSense 等)。因此,按照以下步骤添加一组具有不同调色板的自定义关键字是可行的。您还必须了解如何将自定义代码插入到已定义的 C# 语言服务中。

PS:从来没有尝试过这样做,而且我只是看着似乎需要的工作就感到厌倦了。但我想这就是 JetBrains ReSharper 团队所做的

PPS:如果您使用托管 C++ 而不是 C#,那会简单得多