Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

114
Views
C# Espacio de nombres referenciado Oculto por espacio de nombres de clase

Tengo una clase como esta:

 namespace Token1.Token2.Token3 { public class Class1 { } }

Y otra clase como esta:

 namespace Token2.Token4.Token5 { public class Class1 { } }

La primera clase es parte de mi proyecto, la segunda clase es de una biblioteca de marco desarrollada por otro grupo dentro de mi organización. Observe que el espacio de nombres de la primera clase tiene Token2 en segundo lugar y el espacio de nombres de la segunda clase tiene Token2 en primer lugar.

El problema que tengo es que parece que no puedo hacer referencia a la segunda clase dentro de la primera debido a lo que parece una colisión de espacio de nombres. Si trato de hacer esto en la primera clase:

 namespace Token1.Token2.Token3 { public class Class1 { var frameworkClass1 = new Token2.Token4.Token5.Class1(); } }

el IDE de Visual Studio resalta Token4 en rojo y dice "No se puede resolver el símbolo 'Token4'". Si paso el mouse sobre Token2 donde estoy actualizando Class1, intellisense me muestra "espacio de nombres Token1.Token2", por lo que ve claramente el espacio de nombres de mi clase de proyecto y no ve el espacio de nombres de mi clase de marco.

Sería muy difícil cambiar el espacio de nombres de cualquiera de las bibliotecas de clases debido a la cantidad de código que ya existe. ¿Hay alguna manera de evitar esto?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Dado que Token2 también es un subespacio de nombres de Token1 , debe especificar que está buscando el espacio de nombres "raíz":

 var frameworkClass1 = new global::Token2.Token4.Token5.Class1();

También podría crear un alias con una declaración de using :

 using Token5 = global::Token2.Token4.Token5;

Y luego simplemente haga referencia al alias:

 var frameworkClass1 = new Token5.Class1();
over 4 years ago · Santiago Trujillo Report

0

Puede probar global::Token2 para el espacio de nombres del marco

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!