Я хочу создать псевдоним для имени класса. Следующий синтаксис был бы идеальным:
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, либо из 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
{
...
}
но это потребовало бы, чтобы я преобразовал класс, состоящий из readonly static Colors, в переопределяемые свойства, а затем мой класс ColorScheme должен был бы иметь 30 разных свойств getters вниз в содержащийся объект.
Это слишком много печатает.
Итак, моя следующая мысль заключалась в том, чтобы псевдоним класса:
public static ColorScheme = Outlook2007ColorScheme;
Но это не компилируется.
Как я могу добавить статический класс в другое имя?
Обновление: Может кто-нибудь добавить ответ "Вы не можете сделать это на С#", поэтому я могу отметить это как принятый ответ. Любой, кто хочет ответить на один и тот же вопрос, найдет этот вопрос, принятый ответ и ряд обходных путей, которые могут или могут быть полезны.
Я просто хочу закрыть этот вопрос.