using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace KonfjuzingOne
{
class Program
{
static void Main(string[] args)
{
A aB = new B();
A aC = new C();
B bC = new C();
Console.WriteLine("aB.Write");
aB.Write1(); aB.Write2(); aB.Write3(); aB.Write4();
// > A
// > B
// > B
// > B
Console.WriteLine("aC.Write");
aC.Write1(); aC.Write2(); aC.Write3(); aC.Write4();
// > A
// > Namespace.C
// > B
// > B
Console.WriteLine("bC.Write");
bC.Write1(); bC.Write2(); bC.Write3(); bC.Write4();
// B
// Namespace.C
// B
// B
Console.ReadKey();
}
abstract class A
{
public void Write1() { Console.WriteLine("A"); }
public virtual void Write2() { Console.WriteLine("A"); }
public abstract void Write3();
public virtual void Write4() { Console.WriteLine("A"); }
}
class B : A
{
public void Write1() { Console.WriteLine("B"); }
public virtual void Write2() { Console.WriteLine("B"); }
public override void Write3() { Console.WriteLine("B"); }
public override void Write4() { Console.WriteLine("B"); }
}
class C : B
{
public void Write1() { Console.WriteLine("C"); }
public override void Write2() { Console.WriteLine(new C()); }
}
}
}
Generuje :
aB.Write
A
A
B
B
aC.Write
A
A <-- Czemu nie namespace.C??
B
B
bC.Write
B
KonfjuzingOne.Program+C
B
B
Co pokrywa mi się z założeniami poza wypadkiem aC - Write2()
Które według moich założeń powinno wypluć <Namepsace>.C
będę wdzięczny za podpowiedzi