que han estado tratando de generar una fábrica supone para devolver un objeto diferente de una interfaz común (digamos Item
) de acuerdo con el parámetro de entrada (lo llamo un contexto) de la función getItem(A context)
Polimorfismo y sobrecarga con métodos estáticos en C#.
Ahora, supongamos que defino una nuevo tipo de contexto: B
que hereda de A
.
Quería devolver un artículo diferente dependiendo de si el objeto pasó a la fábrica era de la clase B
o A
.
he tratado de hacer de la siguiente manera (la sobrecarga del método):
class Factory
{
static Item getItem(A context) {...}
static Item getItem(B context) {...}
}
Esto funciona bien si hago algo como esto:
B bContext=new B();
Item it=Factory.getItem(bContext);
Sin embargo, si yo echo y el objeto con el tipo de A
:
A bContext=(A) new B();
Item it=Factory.getItem(bContext);
se llama al primer método de fábrica.
pensé que el polimorfismo se aseguraría la realización del segundo método, incluso después del reparto, y me gustaría saber si me he perdido algo?
Soy consciente de que podría seguir teniendo un único método y utilizar el operador is
para comprobar el tipo de variable, pero pensé que la solución que presenté anteriormente era un poco más elegante.