Voglio creare un alias per il nome di una classe. La seguente sintassi sarebbe perfetta:
public class LongClassNameOrOneThatContainsVersionsOrDomainSpecificName
{
...
}
public class MyName = LongClassNameOrOneThatContainsVersionOrDomainSpecificName;
ma non verrà compilato.
Esempio
Nota Questo esempio viene fornito solo per comodità. Non cercare di risolvere questo particolare problema suggerendo di modificare il design dell'intero sistema. La presenza o la mancanza di questo esempio non cambia la domanda originale.
Alcuni codici esistenti dipendono dalla presenza di una classe statica:
public static class ColorScheme
{
...
}
Questa combinazione di colori è la combinazione di colori di Outlook 2003. voglio introdurre una combinazione di colori di Outlook 2007, pur mantenendo la combinazione di colori di Outlook 2003:
public static class Outlook2003ColorScheme
{
...
}
public static class Outlook2007ColorScheme
{
...
}
Ma sono ancora di fronte al fatto che il codice dipende dalla presenza di una classe statica chiamata ColorScheme
. Il mio primo pensiero è stato quello di creare una ColorScheme
classe che erediterò da Outlook2003
o da Outlook2007
:
public static class ColorScheme : Outlook2007ColorScheme
{
}
ma non puoi ereditare da una classe statica.
Il mio pensiero successivo è stato quello di creare la ColorScheme
classe statica , ma make Outlook2003ColorScheme
e le Outlook2007ColorScheme
classi non statiche. Quindi una variabile statica nella ColorScheme
classe statica può puntare a uno schema di colori "vero":
public static class ColorScheme
{
private static CustomColorScheme = new Outlook2007ColorScheme();
...
}
private class CustomColorScheme
{
...
}
private class Outlook2008ColorScheme : CustomColorScheme
{
...
}
private class Outlook2003ColorScheme : CustomColorScheme
{
...
}
ma ciò richiederebbe che io converta una classe composta interamente di colori statici di sola lettura in proprietà sovrascrivibili, e quindi la mia ColorScheme
classe avrebbe bisogno di avere i 30 diversi getter di proprietà inseriti nell'oggetto contenuto.
È solo troppa digitazione.
Quindi il mio pensiero successivo è stato quello di creare un alias per la classe:
public static ColorScheme = Outlook2007ColorScheme;
Ma questo non si compila.
Come posso alias una classe statica in un altro nome?
Aggiornamento: qualcuno può aggiungere la risposta "Non puoi farlo in C #" , così posso contrassegnarla come risposta accettata. Chiunque altro desideri la risposta alla stessa domanda troverà questa domanda, la risposta accettata e una serie di soluzioni alternative che potrebbero o non potrebbero essere utili.
Voglio solo chiudere questa domanda.