C# : Cómo manejar el método que se implementa en las clases derivadas, pero no en la clase padre en un bucle?

0

Pregunta

Tengo el siguiente método en mi clase:

    public double ComputeCost()
    {
        double Cost = 0;
        foreach (GenericTask Task in this.GenericTasks){
            Cost += Task.Compute();
        }

        return Cost;
        
    }

El problema es que la Compute método sólo está implementada en las clases derivadas de GenericTask por ejemplo, EngineeringTask y DevelopmentTask y por lo tanto el anterior código no compila.

¿Cómo puedo lograr lo que quiero? Soy nuevo en C# y no sabe la "limpia" para lograr esto ? Voy a implementar un maniquí Compute método en el GenericTasks aunque nunca va a calcular nada porque carece de datos adecuada ?

c# for-loop inheritance
2021-11-23 21:20:05
1

Mejor respuesta

2

Crear un método abstracto en la clase base y tienen las clases derivadas reemplazar este método.

La clase Base:

public abstract double Compute();

Clase derivada:

public override double Compute()
{
    /* your class-specific implementation */
}

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/override

https://en.wikipedia.org/wiki/Virtual_function

2021-11-23 21:25:42

En adición a lo @Moho dijo, usted puede leer más acerca de Polimorfismo y Primordial para comprender conceptos de la programación orientada a objetos.
R.Abbasi

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................