Pergunta

Eu vim contra o cenário improvável quando eu referenciar dois conjuntos externos que ambos têm os mesmos nomes de namespace e tipo. Quando tento usar o tipo, o compilador gera um erro que ele não pode resolver qual eu quero usar.

Eu vejo que C # ofertas um mecanismo para aliases de uso para referências. Você pode até mesmo especificar esses aliases através da janela Property de uma referência no Visual Studio 2008. Como faço para usar este alias no meu código? Como eu entendo, eu deveria estar usando o operador ::, mas falha com o seguinte erro:

CS0432 - Alias not found

O operador . habitual falhar também.

Na janela de saída, vejo que o compilador recebe o alias passado corretamente em sua linha de comando.

Os ponteiros sobre o que pode ser capaz de experimentar a seguir são muito apreciados.

Foi útil?

Solução

extern alias alias1;
using alias1::Namespace;

Outras dicas

Tente isto:

extern alias asm1;
extern alias asm2;

namespace Client
{
    class Program
    {
        static void Main(string[] args)
        {
            asm1.MyNs.MyClass mc1 = null;
            asm2.MyNs.MyClass mc2 = null;
        }
    }
}

e adicione global,asm1 para a referência de projeto para assembly1 e global,asm2 para assembleia2

Eu acho que você precisa usar um extern apelido . Anson Horton tem um bom blog sobre este problema e como usar o extern apelido para corrigi-lo.

Quando você faz referência alguma montagem no projeto que tem alias padrão "global". Quando você adicionar outro alias para que a montagem, por exemplo, "Global, AssemblyA", você vai fazer referência a ela como isto:

using SomeTypeAlias = AssemblyA::Company.Product.SomeType;

ou

void SomeMethod(AssemblyA::Company.Product.SomeType someType) { ... }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top