Ok, estoy tratando de hacer lo siguiente:sobrecarga de métodos: embudo de llamada a la clase derivada de sobrecarga argumento
protected bool ValidAdvert(Base item)
{
throw ThisIsAnAbstractClassException();
}
protected bool ValidAdvert(Derived1 item)
{
return ADerived1SpecificPredicate;
}
protected bool ValidAdvert(Derived2 item)
{
return ADerived2SpecificPredicate;
}
Y tienen las versiones de clase derivada del método de ser llamado, cuando una clase base se pasa a el método. La clase base es abstracta, así que esto debería, en teoría, ser posible.
Antes de que alguien diga algo sobre sobrecargar el método en las clases, la lógica dentro de los métodos depende de un gran número de condiciones diferentes, ninguna de las cuales está relacionada, y ninguna relacionada directamente con la clase Base/Derivada (como el estado de inicio de sesión, etc.)
También es inteligente y evita meterse con las diversas clases derivadas (¡ojalá hubiera solo 2!). –
notas absolutas: necesitas lanzar a bool en el retorno, y el método. Invocar toma un [] de objetos, y por lo tanto, si simplemente tratas de pasar solo 1 :) ¡Gracias! –
@Ed - Creo que mantener el predicado con la clase derivada es en realidad el método preferido. El almacenamiento de la lógica derivada de clase específica en una clase base crea un acoplamiento inverso entre los dos. No veo esto como algo bueno en absoluto. La clase base no debería necesitar saber nada sobre sus clases derivadas. – tvanfosson