不关于using foo = MyPackage.Foo;
我意识到这更多地与IDE(Visual Studio 2010)有关,它向我展示了蓝色的特殊类型。对于我的一些班级,我想要same。我想要蓝色 (特别呈现),并且可以在整个项目中访问。
原因是我想给他们意义/重要性,以便我的团队中的每个人都知道这个课程是整个项目的关键课程。
// "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
这可能吗?如果我的IDE安装中有一个文件,里面会有上面的关键字,我可以添加一些关键字并保存并重启IDE?
要让2个班级做同样的事我能做到这一点。这是同一个班级的两个名字。我知道我需要在这些之间施展。
public class foo : Foo
{ }
答案 0 :(得分:5)
如果您要为此类定义关键字(例如int
或void
),则C#中支持 。 Keywords是预定义的保留标识符,只有对编译器的更改才能实现您的意图。
最接近的方法是指定一个类/名称空间别名,如@SonerGönül所示。但是,由于这适用于单个文件,因此您必须将其预先包含在每个项目文件中,如this post中所述。
现在,IDE根据 关键字的事实对关键字进行着色(从某种意义上说,它们在IDE的语法高亮引擎中作为C#语言的关键字列在其中)。根据您使用的IDE,您可能可以为该类添加标识符,使其看起来像关键字。但是,您仍然需要在每个文件中为其导入别名,否则编译器将无法识别它。
答案 1 :(得分:3)
您的问题似乎与两个不同的要求有关:
1)不可能直接做到。在这种情况下,您可以做的是提供包含该类的程序集,并强制您的团队使用它。您甚至可以使用static analysis tool并触发一些编译错误(例如,如果未引用该程序集)。
2)这更难实施。可以在Visual Studio中自定义C#的默认语法着色机制,但绝对不能 。
Visual Studio通过Language Service支持给定语言(带语法高亮,IntelliSense等)。因此,通过遵循these步骤添加一组具有不同调色板的自定义关键字是可行的。您还必须了解如何将自定义代码插入已定义的C#语言服务中。
PS:从未尝试过这样做,只是看着似乎需要的工作我感到很累。但我猜that's what the JetBrains ReSharper team did。PPS:如果你使用托管C ++而不是C#,它将是much simpler。
答案 2 :(得分:2)
你是否正在寻找这样的using directive
?
using foo = MyPackage.MyClass;
编辑:using
指令仅适用于命名空间或类型。你看起来听起来不可能,但我一直在寻找..
答案 3 :(得分:0)
真正实现这一目标的唯一方法是创建一个程序集以引用您的项目(或者如果您不想要外部程序集,只需在项目中创建一个类)。
在你的程序集中,你可以删除命名空间,并只使用这样的类:
public class mytype
{
public void DoSomething()
{
}
}
public class MyType : mytype
{
}
如果您想要大写和小写类,只需继承基类。
然后在您的应用程序中,一旦您将其添加为参考,您就可以访问它:
namespace Test
{
class Program
{
static void Main(string[] args)
{
mytype my_type = new mytype();
my_type.DoSomething();
MyType my_Type = new MyType();
my_Type.DoSomething();
}
}
}
当然,颜色将是标准的类颜色,但允许您至少访问您在整个项目中定义的自定义“类型”。
希望这能引导你朝着正确的方向前进。
答案 4 :(得分:0)
你无法做你想做的事;例如,string是C#语言中System.String的别名;不可能添加到别名列表,因为这将涉及修改语言。