• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

193
Vistas
¿Cómo llamar a un constructor con un parámetro genérico ambiguo?

Tengo la siguiente clase genérica:

 class Foo<T> { //Constructor A public Foo(string str) { Console.Write("A"); } //Constructor B public Foo(T obj) { Console.Write("B"); } }

Quiero crear una instancia de esta clase con T como una string , usando el constructor B.

Llamar a new Foo<string>("Hello") usa el constructor A. ¿Cómo puedo llamar al constructor B (sin usar la reflexión)?

over 3 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Es horrible, pero podrías usar un método genérico local:

 public void RealMethod() { // This is where I want to be able to call new Foo<string>("Hello") Foo<string> foo = CreateFoo<string>("Hello"); CreateFoo<T>(T value) => new Foo(value); }

Puede agregar eso como un método de utilidad en cualquier lugar, eso sí:

 public static class FooHelpers { public static Foo<T> CreateFoo<T>(T value) => new Foo(value); }

(Preferiría el método local porque parece que rara vez es un problema).

over 3 years ago · Santiago Trujillo Denunciar

0

Dado que los dos constructores usan nombres diferentes para los argumentos, puede especificar el nombre del argumento para elegir el constructor a usar:

 new Foo<string>(str: "Test"); // Uses constructor A new Foo<string>(obj: "Test"); // Uses constructor B
over 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda