В приведенном ниже коде я попытался двумя способами получить доступ к родительской версии метода MethodTwo, но результат был всегда 2. Есть ли способ получить 1 результат из экземпляра ChildClass без изменения этих двух классов?
class ParentClass
{
public int methodOne()
{
return methodTwo();
}
virtual public int methodTwo()
{
return 1;
}
}
class ChildClass : ParentClass
{
override public int methodTwo()
{
return 2;
}
}
class Program
{
static void Main(string[] args)
{
var a = new ChildClass();
Console.WriteLine("a.methodOne(): " + a.methodOne());
Console.WriteLine("a.methodTwo(): " + a.methodTwo());
Console.WriteLine("((ParentClass)a).methodTwo(): "
+ ((ParentClass)a).methodTwo());
Console.ReadLine();
}
}
Обновление ChrisW разместил это:
Из-за пределов класса я не знаю любой простой способ; но, возможно, я не знать, что произойдет, если вы попробуете отражение: используйте Type.GetMethod метод для поиска MethodInfo связанный с методом в ParentClass, а затем вызовите MethodInfo.Invoke
Этот ответ был удален. Мне интересно, может ли этот хак работать, просто ради любопытства.