Chcę utworzyć alias dla nazwy klasy. Następująca składnia byłaby idealna:
public class LongClassNameOrOneThatContainsVersionsOrDomainSpecificName
{
...
}
public class MyName = LongClassNameOrOneThatContainsVersionOrDomainSpecificName;
ale się nie skompiluje.
Przykład
Uwaga Ten przykład podano tylko dla wygody. Nie próbuj rozwiązywać tego konkretnego problemu, sugerując zmianę projektu całego systemu. Obecność lub brak tego przykładu nie zmienia pierwotnego pytania.
Część istniejącego kodu zależy od obecności klasy statycznej:
public static class ColorScheme
{
...
}
Ten schemat kolorów to schemat kolorów programu Outlook 2003. chcę wprowadzić schemat kolorów programu Outlook 2007, zachowując schemat kolorów programu Outlook 2003:
public static class Outlook2003ColorScheme
{
...
}
public static class Outlook2007ColorScheme
{
...
}
Ale wciąż mam do czynienia z faktem, że kod zależy od obecności statycznej klasy o nazwie ColorScheme
. Moją pierwszą myślą było stworzenie ColorScheme
klasy, którą odziedziczę po jednym Outlook2003
lub Outlook2007
:
public static class ColorScheme : Outlook2007ColorScheme
{
}
ale nie możesz dziedziczyć z klasy statycznej.
Następną moją myślą było stworzenie ColorScheme
klasy statycznej , ale make Outlook2003ColorScheme
i Outlook2007ColorScheme
klasy nie są statyczne. Następnie zmienna statyczna w ColorScheme
klasie statycznej może wskazywać na „prawdziwy” schemat kolorów:
public static class ColorScheme
{
private static CustomColorScheme = new Outlook2007ColorScheme();
...
}
private class CustomColorScheme
{
...
}
private class Outlook2008ColorScheme : CustomColorScheme
{
...
}
private class Outlook2003ColorScheme : CustomColorScheme
{
...
}
ale to wymagałoby ode mnie konwersji klasy składającej się całkowicie ze statycznych kolorów tylko do odczytu na właściwości, które można zastąpić, a następnie moja ColorScheme
klasa musiałaby mieć 30 różnych funkcji pobierających właściwości, które zostałyby przeniesione do zawartego obiektu.
To po prostu za dużo pisania.
Więc moją następną myślą było nadanie aliasu klasie:
public static ColorScheme = Outlook2007ColorScheme;
Ale to się nie kompiluje.
Jak mogę utworzyć alias dla klasy statycznej pod inną nazwą?
Aktualizacja: Czy ktoś może dodać odpowiedź „Nie możesz tego zrobić w C #” , więc mogę oznaczyć to jako zaakceptowaną odpowiedź. Każdy, kto chce odpowiedzieć na to samo pytanie, znajdzie to pytanie, zaakceptowaną odpowiedź i szereg obejść, które mogą być przydatne lub nie.
Chcę tylko zamknąć to pytanie.