Tengo el siguiente patrón de modelo:¿Hay alguna forma de sobrecargar los métodos de extensión en C#?
public abstract class PARENTCLASS {...}
public class CHILD_A_CLASS : PARENTCLASS{...}
public static class EXTENSION{
public static METHOD(this PARENTCLASS parent){...}
public static METHOD(this CHILD_A_CLASS child) {...}
}
Algo así como por encima, por supuesto, habrá más niños (y nieto) clases pero sólo hay que poner uno de ellos. El problema es que cuando me llamó el método de extensión como la siguiente:
PARENTCLASS cc = new CHILD_A_CLASS();
cc.METHOD();
Se ejecutará el padre Método de extensión en lugar de mi esperada-NIÑO método de extensión. ¿Alguien tiene idea de cómo implementar esto? (No estoy considerando poner el MÉTODO en la clase y dejar que haga herencia porque quiero mantener la clase de modelo limpia y lejos de otra lógica).
Gracias. Creo que el tipo de conversión sería demasiado costoso para ejecutar y también bastante torpe para mantener el código así. Creo que buscaría un método alternativo para implementar esto. – xandy
el tipo de fundición es bastante rápido, aunque puede ser complicado mantenerlo. –
Su propuesta no es polimórfica, el método seleccionado solo es correcto para el tipo de referencia de compilación y no el tipo de tiempo de ejecución. Demasiado en pocas palabras, no es cierto que prevalezca. Creo que es una mala práctica porque no funcionará todo el tiempo y solo dará lugar a inconsistencias, se verá mal y causará más problemas. Creo que los métodos de extensión son incorrectos ya que ocultan el hecho de que estos métodos no se envían dinámicamente. –