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