Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

482
Visualizações
definir el método de interfaz con diferentes parámetros en C#
interface parentInterface { public String methodA(/*define parameters name and dataType*/); }

y

 public class childA : parentInterface { public String methodA(String a, int b, String c, long d){} } public class childB : parentInterface { public String methodA(int e, String f, String g){} }

Quiero definir el nombre de los parámetros del método de interfaz y el tipo de datos

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Crear un nuevo parámetro

Esto a menudo se puede resolver usando una class o struct para usar como parámetro único en lugar de los tipos integrados.

La interfaz

Usted sabe qué esperar de una class cuando implementa una interface familiar. Sabemos que todas las clases que implementan la interfaz IEnumerable se pueden usar en un bucle foreach . Por convención, el nombre de la interfaz es "I" seguido de una descripción de una habilidad. Es típico que el nombre termine con el sufijo "-able".

-able Sufijo formador de adjetivos que significa:
1 -capaz de ser [como en] calculable.
2 -tener la cualidad de [como en] cómodo.

Diccionario de ingles Oxford

Cambiemos el nombre de parentInterface y MethodA() para dar un ejemplo claro de cómo funciona esto normalmente (y para evitar sanciones negativas):

 public interface ITreatable { Treatment GetTreatment(); }

Bueno, encontrar la cura puede no ser tan fácil, incluso si el object representa una enfermedad tratable. He aquí algunos ejemplos:

 public class TheFlu : ITreatable { public Treatment GetTreatment(int year) { // return some object, Treatment, based on the flu season. } } public class Hangover : ITreatable { public Treatment GetTreatment() { return Treatment.Empty; // no parameters necessary. } } public class Insomnia : ITreatable { public Treatment GetTreatment(FamilyHistory occurances, LabResult lab) { // return Some Treatment object that can be different based on the // calculated risk from the arguments. } }

Lo que realmente nos falta aquí

No sé biología, pero el concepto sigue siendo el mismo. Tiene un grupo de objetos de enfermedad ITreatable que necesitan tener un método GetTreatment() ; sin embargo, utilizan diferentes criterios para realizar los cálculos. Necesitamos Symptoms .

 public class Symptoms { public FamilyHistory History; public DateTime Time; public LabResult Lab; public BloodTest BloodTest; public TimeSpan SymptomTime; public IsCritical IsCritical; }

Ahora, los objetos pueden analizar los síntomas en su propio método, y nuestra interfaz se verá así:

 public interface ITreatable { Treatment GetTreatment(Symptoms symptoms); }
over 4 years ago · Santiago Trujillo Relatório

0

Tienes dos métodos diferentes.

 public String methodA(String a, int b, String c, long d){}

y

 public String methodA(int e, String f, String g){}

que representan dos contratos diferentes para childA y childB respectivamente. No puede definir una interfaz con un solo methodA que se ajuste a ambas definiciones. Lo que buscas hacer no es posible.

Tenga en cuenta que podría definir ambas sobrecargas en su interfaz, pero luego cada clase que implemente esa interfaz tendría que implementar ambas sobrecargas.

over 4 years ago · Santiago Trujillo Relatório

0

Podría usar un método de interfaz con un número variable de argumentos usando la palabra clave params . Pero luego debe convertir cada argumento en el tipo apropiado, que es un poco propenso a errores.

 public interface IFoo { void DoWork(params object [] arguments); } public class Foo : IFoo { public void DoWork(params object [] arguments) { string a = (string)arguments[0]; int b = (int)arguments[1]; string c = (string)arguments[2]; long d = (long)arguments[3]; Console.WriteLine("a={0}, b={1}, c={2}, d={3}", a,b,c,d); } } public class AnotherFoo : IFoo { public void DoWork(params object [] arguments) { int e = (int)arguments[0]; string f = (string)arguments[1]; string g = (string)arguments[2]; Console.WriteLine("e={0}, f={1}, g={2}", e,f,g); } } void Main() { var foo = new Foo(); foo.DoWork("a",1, "c",2L); var foo1 = new AnotherFoo(); foo1.DoWork(1,"f", "g"); }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda