C resolução # âmbito Padrão
-
05-07-2019 - |
Pergunta
Eu herdei 'Button' uma classe C # (que eu não posso mudar), que se choca com a classe BCL 'Windows.Forms.Button'. Normalmente, Id ser muito feliz de ir:
MyPackage.MyClass.Button;
Mas há um grande número ou referências a esta classe que é uma dor de ter de re-tipo.
Existe alguma maneira de obter o compilador (linker?) Como padrão para usar a versão personalizada do botão sobre a versão BCL?
Solução
Adicione isto a parte superior do arquivo:
using MyButton = MyPackage.MyClass.Button;
Agora você pode referenciar o botão personalizado usando um nome diferente. Pode ser necessário fazer algo semelhante para o botão de estoque se você usar isso em qualquer lugar do mesmo arquivo.
Outras dicas
Se você quiser usá-lo por padrão, substitua
using Windows.Forms;
com
using MyPackage.MyClass;
Se você fizer isso, você precisa qualificar totalmente todos os botões de Windows.Forms.
Ou, se você quiser, você pode alias namespace
using My = MyPackage.MyClass;
//... then
My.Button b = ...
ou o alias o botão
using MyButton = MyPackage.MyClass.Button;
Você pode remover using Windows.Forms;
a partir do topo do código. Isso significa, naturalmente, que você teria que fazer referência a todos os itens Windows.Forms especificamente.
Parece que eu posso fazer o seguinte:
using Button = MyPackage.MyClass.Button;
obras e preserva todas as referências dentro do código de botão. Embora Im tentado a não enveredar por este caminho, pois é ainda ambiguious (pelo menos para o leitor) qual botão está sendo usado.
Você pode, pelo menos, torná-lo uma pequena pouco menos dolorosa / prolixo com "usando":
using MPMC = MyPackage.MyClass;
então você pode dizer:
MPMC.Button