У меня есть follwing структура класса:Вызвать метод производного класса через отражение. Возможно или нет?
public abstract class AbstractFoo
{
public virtual void Prepare()
{
}
}
public class Foo : AbstractFoo
{
public override void Prepare()
{
}
}
public class Bar : Foo
{
public override void Prepare()
{
}
}
public class ClassThatUses
{
public Foo Foo;
}
Var classThatUsesInstance = новые ClassThatUses {Foo = новый бар(); }
Как-то в ClassThatUses мне нужно позвонить (через отражение - обязательно) Подготовить метод класса Bar.
Вместо вопроса (???) меток мне нужно сделать код отражения, который вызовет метод «Подготовка» к бару, а не foo.
В принципе, это должно быть что-то вроде:
classThatUsesInstance.GetType.GetProperties()[0]
-> somehow understand that it's actually Bar, but not Foo.
-> call method (which i know how to do, i just need the RIGHT method to be used)
Я не знаю, является ли это бар, или Barbar или BarBarBar. Мне нужно узнать тип назначенного поля REAL, а затем ввести его.
Возможно ли это? Или, по крайней мере, можно узнать реальный тип поля Foo во время выполнения?
p.s. я понимаю, что без отражения это будет называться - не проблема. это скорее теория.
UPD: http://msdn.microsoft.com/en-us/library/a89hcwhh.aspx Обратите внимание, что вы не можете использовать объект MethodInfo из базового класса для вызова переопределенного метода в производном классе, поскольку поздняя привязка не может разрешить переопределения. Означает ли это, что проблема неразрешима?
Большое вам спасибо! вот что мне нужно! – 0100110010101