"Demonstration of Issue with Naive Polymorphism Implementation"

public void Test() {
    ArmourPowerupEntity powerup = GetArmourPowerup();
    Camera camera = GetCamera();
    powerup.PickUpArmour();
    Console.WriteLine(powerup.CameraCanSeeThis(camera)); // prints 'false'
    Console.WriteLine((powerup as IModelledEntity).CameraCanSeeThis(camera)); // prints 'true'!
}


Code snippet taken from "Simulating Multiple Inheritance In C#".