simple : declaraste un método sin implementación (y encima lo usás al método) ... la solución que planteó mayofunk es una -> implementación mínima y default...
o usar interface más que class ... (de paso tenés herencia múltiple siendo interfaces, a diferencia de clases ...)...
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Project1
{
interface Padre
{
void Metodo();
}
class Hijo1 : Padre
{
public void Metodo()
{
Console.WriteLine("Padre : Implementacion de Hijo1");
}
}
class Hijo2 : Padre
{
public void Metodo()
{
Console.WriteLine("Padre : Implementacion de Hijo2");
}
}
class Hijo3 : Padre
{
public void Metodo()
{
Console.WriteLine("Padre : Implementacion de Hijo3");
}
}
class Coleccion : HashSet<Padre>
{
public Coleccion()
{
}
public void Recorrer()
{
foreach (var hijo in this)
{
hijo.Metodo();
}
}
}
}
además, todas esas clases comparten en común Metodo(), así que ... ¿por que no poner Padre como interface? meterle Metodo ahí e implementarlo en las clases hijas (o, declarar padre como una clase, implementar un Metodo() básico y heredar, sin dar la obligación de implementarlo), algo así :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Project1
{
class Padre
{
public virtual void Metodo()
{
Console.WriteLine("Padre: Implementacion default");
}
}
class Hijo1 : Padre
{
}
class Hijo2 : Padre
{
public override void Metodo()
{
Console.WriteLine("Padre : Implementacion de Hijo2");
}
}
class Hijo3 : Padre
{
}
class Coleccion : HashSet<Padre>
{
public Coleccion()
{
}
public void Recorrer()
{
foreach (var hijo in this)
{
hijo.Metodo();
}
}
}
}
Pasate por estas referencias :
Interfaces ->
http://msdn.microsoft.com/es-es/library/ms173156.aspxvirtual ->
http://msdn.microsoft.com/es-es/library/9fkccyh4.aspxoverride ->
http://msdn.microsoft.com/es-es/library/ebca9ah3.aspxnew (como modificador) ->
http://msdn.microsoft.com/es-es/library/435f1dw2.aspxCuando usar new y override ->
http://msdn.microsoft.com/es-es/library/ms173153.aspx y
http://kementeus.wordpress.com/2007/08/28/clases-y-herencia-en-c-new-virtual-y-override/Saludos ~