Como você resolve conflitos de namespace .Net com a palavra-chave 'using'?
-
09-06-2019 - |
Pergunta
Aqui está o problema: você inclui vários assemblies e adiciona 'using namespaceX' no topo do seu arquivo de código.
Agora você deseja criar uma classe ou usar um símbolo que seja definido em vários namespaces, por exemplo System.Windows.Controls.Image
& System.Drawing.Image
Agora, a menos que você use o nome totalmente qualificado, haverá um erro de criação/construção devido à ambiguidade, apesar das declarações 'using' corretas no topo.Qual é a saída aqui?
(Outra postagem da base de conhecimento..Encontrei a resposta após cerca de 10 minutos de pesquisa porque não sabia a palavra-chave certa para pesquisar)
Solução
Usar apelido
using System.Windows.Controls;
using Drawing = System.Drawing;
...
Image img = ... //System.Windows.Controls.Image
Drawing.Image img2 = ... //System.Drawing.Image
Outras dicas
Esta página tem um artigo muito bom sobre namespaces e a instrução using:
http://www.blackwasp.co.uk/Namespaces.aspx
Você deseja ler a parte sobre "Criando Aliases" que permitirá criar um alias para um ou ambos os espaços de nome e referenciá-los assim:
using ControlImage = System.Windows.Controls.Image;
using System.Drawing.Image;
ControlImage.Image myImage = new ControlImage.Image();
myImage.Width = 200;