Man kan også helt eksplicit checke om objektet er af typen B eller C med følgende kode placeret i A:
if (this is B)
{
// udfør kode specifikt for B
}
else if (this is C)
{
// udfør kode specifikt for C
}
else
{
// det er D, E, F, G, ....
}
Man kan dog diskutere, hvor kønt det er at A kender til B og C. Det er klar pænere at ligge det kode, som skal køres alt efter om det er B eller C direkte i B eller C.
public abstract class A
{
public void DoWork()
{
// ...
DoSubTypeStuff();
// ...
}
protected abstract void DoSubTypeStuff();
}
public class B : A
{
protected override void DoSubTypeStuff()
{
// udfør kode specifikt for B
}
}
public class C : A
{
protected override void DoSubTypeStuff()
{
// udfør kode specifikt for C
}
}