Я хочу создать псевдоним для имени класса. Следующий синтаксис был бы идеальным:
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
класс, но классы make 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 #» , чтобы я мог отметить это как принятый ответ. Любой другой, желающий получить ответ на тот же вопрос, найдет этот вопрос, принятый ответ и ряд обходных путей, которые могут оказаться полезными, а могут и не оказаться.
Я просто хочу закрыть этот вопрос.