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

229
Views
¿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 4 years ago · Santiago Trujillo
2 answers
Answer question

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 4 years ago · Santiago Trujillo Report

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 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!