我想为类名创建一个别名。以下语法将是完美的:
public class LongClassNameOrOneThatContainsVersionsOrDomainSpecificName
{
...
}
public class MyName = LongClassNameOrOneThatContainsVersionOrDomainSpecificName;
但它不会编译。
例子
注意此示例仅为方便起见而提供。不要试图通过建议改变整个系统的设计来解决这个特定的问题。此示例的存在或缺失不会改变原始问题。
一些现有代码取决于静态类的存在:
public static class ColorScheme
{
...
}
此配色方案是 Outlook 2003 配色方案。我想介绍 Outlook 2007 配色方案,同时保留 Outlook 2003 配色方案:
public static class Outlook2003ColorScheme
{
...
}
public static class Outlook2007ColorScheme
{
...
}
但我仍然面临这样一个事实,即代码取决于一个名为ColorScheme
. 我的第一个想法是创建一个ColorScheme
我将从Outlook2003
or继承的类Outlook2007
:
public static class ColorScheme : Outlook2007ColorScheme
{
}
但是您不能从静态类继承。
我的下一个想法是创建静态ColorScheme
类,但使Outlook2003ColorScheme
和Outlook2007ColorScheme
类非静态。然后静态类中的静态变量ColorScheme
可以指向任一“真实”配色方案:
public static class ColorScheme
{
private static CustomColorScheme = new Outlook2007ColorScheme();
...
}
private class CustomColorScheme
{
...
}
private class Outlook2008ColorScheme : CustomColorScheme
{
...
}
private class Outlook2003ColorScheme : CustomColorScheme
{
...
}
但这需要我将一个完全由只读静态颜色组成的类转换为可覆盖的属性,然后我的ColorScheme
类需要将 30 个不同的属性获取器转换为包含的对象。
就是打字太多了。
所以我的下一个想法是给这个类起别名:
public static ColorScheme = Outlook2007ColorScheme;
但这不编译。
如何将静态类别名为另一个名称?
更新:有人可以添加答案“您不能在 C# 中执行此操作”,因此我可以将其标记为已接受的答案。任何其他想要相同问题答案的人都会发现这个问题、已接受的答案以及许多可能有用或可能没有用的变通方法。
我只想结束这个问题。