「派生からこんにちは」を期待しています。しかし、「ベースからこんにちは」を取得します。
class Program
{
interface IBase
{
void Method();
}
public class Base: IBase
{
public virtual void Method()
{
Console.WriteLine("Hello from the base.");
}
}
public class Derived : Base
{
public virtual new void Method()
{
Console.WriteLine("Hello from the derived.");
}
}
static void Main(string[] args)
{
IBase x = new Derived();
x.Method();
}
}
では、なぜ派生クラスのメソッドが呼び出されないのでしょうか。さらに重要なことに、xをDerived型にキャストせずに、派生クラスメソッドを呼び出すにはどうすればよいですか?
私の実際のアプリケーションでは、IBaseには他のいくつかの関連するメソッドがあり、DerivedはIBaseの2つのメソッドのみを置き換えます。