Why does this work? Method overloading + method overriding + polymorphism
In the following code: public abstract class MyClass { public abstract bool MyMethod( Database database, AssetDetails asset, ref string errorMessage); } public sealed class MySubClass : MyClass { public override bool MyMethod( Database database, AssetDetails asset, ref string errorMessage) { return MyMethod(database, asset, ref errorMessage); } public bool MyMethod( Database database, AssetBase asset, ref string errorMessage) { // work is done here } } where AssetDetails is a subclass of AssetBase. Why does the first MyMethod call the second at runtime when passed an AssetDetails, rather than