Je souhaite créer un alias pour un nom de classe. La syntaxe suivante serait parfaite:
public class LongClassNameOrOneThatContainsVersionsOrDomainSpecificName
{
...
}
public class MyName = LongClassNameOrOneThatContainsVersionOrDomainSpecificName;
mais il ne se compilera pas.
Exemple
Remarque Cet exemple est fourni à titre indicatif uniquement. N'essayez pas de résoudre ce problème particulier en suggérant de modifier la conception de l'ensemble du système. La présence, ou l'absence, de cet exemple ne change pas la question d'origine.
Certains codes existants dépendent de la présence d'une classe statique:
public static class ColorScheme
{
...
}
Ce jeu de couleurs est le jeu de couleurs Outlook 2003. Je souhaite introduire un jeu de couleurs Outlook 2007, tout en conservant le jeu de couleurs Outlook 2003:
public static class Outlook2003ColorScheme
{
...
}
public static class Outlook2007ColorScheme
{
...
}
Mais je suis toujours confronté au fait que le code dépend de la présence d'une classe statique appelée ColorScheme
. Ma première pensée a été de créer une ColorScheme
classe dont j'hériterai de l'un Outlook2003
ou l' autre Outlook2007
:
public static class ColorScheme : Outlook2007ColorScheme
{
}
mais vous ne pouvez pas hériter d'une classe statique.
Ma prochaine pensée a été de créer la ColorScheme
classe statique , mais make Outlook2003ColorScheme
et les Outlook2007ColorScheme
classes non statiques. Ensuite, une variable statique de la ColorScheme
classe statique peut pointer vers l'un ou l'autre des jeux de couleurs "vrais":
public static class ColorScheme
{
private static CustomColorScheme = new Outlook2007ColorScheme();
...
}
private class CustomColorScheme
{
...
}
private class Outlook2008ColorScheme : CustomColorScheme
{
...
}
private class Outlook2003ColorScheme : CustomColorScheme
{
...
}
mais cela m'obligerait à convertir une classe composée entièrement de couleurs statiques en lecture seule en propriétés remplaçables, puis ma ColorScheme
classe aurait besoin d'avoir les 30 propriétés différentes getters thunk dans l'objet contenu.
C'est juste trop de frappe.
Ma prochaine pensée était donc d'aliaser la classe:
public static ColorScheme = Outlook2007ColorScheme;
Mais cela ne compile pas.
Comment puis-je aliaser une classe statique en un autre nom?
Mise à jour: quelqu'un peut-il ajouter la réponse "Vous ne pouvez pas faire cela en C #" , afin que je puisse marquer cela comme la réponse acceptée. Toute autre personne souhaitant obtenir une réponse à la même question trouvera cette question, la réponse acceptée et un certain nombre de solutions de contournement qui pourraient ou non être utiles.
Je veux juste clore cette question.