Quero criar um alias para o nome de uma classe. A seguinte sintaxe seria perfeita:
public class LongClassNameOrOneThatContainsVersionsOrDomainSpecificName
{
...
}
public class MyName = LongClassNameOrOneThatContainsVersionOrDomainSpecificName;
mas não compilará.
Exemplo
Nota Este exemplo é fornecido apenas por conveniência. Não tente resolver esse problema específico sugerindo alterar o design de todo o sistema. A presença, ou falta, deste exemplo não altera a pergunta original.
Alguns códigos existentes dependem da presença de uma classe estática:
public static class ColorScheme
{
...
}
Este esquema de cores é o esquema de cores do Outlook 2003. quero apresentar um esquema de cores do Outlook 2007, mantendo o esquema de cores do Outlook 2003:
public static class Outlook2003ColorScheme
{
...
}
public static class Outlook2007ColorScheme
{
...
}
Mas ainda sou confrontado com o fato de que o código depende da presença de uma classe estática chamada ColorScheme
. Meu primeiro pensamento foi criar uma ColorScheme
classe que herdarei de Outlook2003
ou Outlook2007
:
public static class ColorScheme : Outlook2007ColorScheme
{
}
mas você não pode herdar de uma classe estática.
Meu próximo pensamento foi criar a ColorScheme
classe estática , mas fazer Outlook2003ColorScheme
e as Outlook2007ColorScheme
classes não estáticas. Então, uma variável estática na ColorScheme
classe estática pode apontar para qualquer esquema de cores "verdadeiro":
public static class ColorScheme
{
private static CustomColorScheme = new Outlook2007ColorScheme();
...
}
private class CustomColorScheme
{
...
}
private class Outlook2008ColorScheme : CustomColorScheme
{
...
}
private class Outlook2003ColorScheme : CustomColorScheme
{
...
}
mas isso exigiria que eu convertesse uma classe composta inteiramente de cores estáticas somente leitura em propriedades substituíveis e, em seguida, minha ColorScheme
classe precisaria ter os 30 getters de propriedade diferentes transformados no objeto contido.
Isso é muita digitação.
Então, meu próximo pensamento foi criar um alias para a classe:
public static ColorScheme = Outlook2007ColorScheme;
Mas isso não compila.
Como posso criar um alias para uma classe estática com outro nome?
Atualização: Alguém pode adicionar a resposta "Você não pode fazer isso em C #" , para que eu possa marcá-la como uma resposta aceita. Qualquer pessoa que deseje a resposta para a mesma pergunta encontrará esta pergunta, a resposta aceita e uma série de soluções alternativas que podem ou não ser úteis.
Eu só quero encerrar esta questão.