次の場合、ポリモーフィズムが適切に機能しないように見えます。次の定義があります。
interface BaseInterface{}
interface NewInterface:BaseInterface{}
class NewClass:NewInterface{}
class GenericClass<T> where T:BaseInterface
{
public string WhoIAm(T anObject)
{
return TestPolymorphism.CheckInterface(anObject);
}
}
class ImplementedClass:GenericClass<NewInterface>{}
class TestPolymorphism
{
public static string CheckInterface(BaseInterface anInterface)
{
return "BaseInterface";
}
public static string CheckInterface(NewInterface anInterface)
{
return "NewInterface";
}
}
次に、私が呼び出すと:
NewClass nc = new NewClass();
ImplementedClass impClass = new ImplementedClass();
Console.WriteLine("The result is " + impClass.WhoIAm(nc));
「結果はBaseInterfaceです」があります
nc が BaseClass とNewClass
を実装しているため、「結果は NewInterface である」と期待していましたが
、結果として「NewClass」を取得する最良の方法は何でしょうか?
ありがとう