using System.Collections.Generic;
namespace Test
{
public abstract class Base
{
public virtual IEnumerable GetStuff (int a)
{
yield return this;
}
}
public abstract class Derived : Base
{
public override IEnumerable GetStuff (int a)
{
foreach (var x in base.GetStuff (a))
yield return x;
}
}
public class SpecialDerived : Derived
{
public override IEnumerable GetStuff (int a)
{
foreach (var x in base.GetStuff (a))
yield return x;
}
public static void Main ()
{
Base b = new SpecialDerived ();
foreach (var a in b.GetStuff (5)) {
}
}
}
}