Мне нужно расширить поведение экземпляра, но у меня нет доступа к исходному исходному коду этого экземпляра. Например:C# Изменение метода класса во время выполнения
/* I don't have the source code for this class, only the runtime instance */
Class AB
{
public void execute();
}
в моем коде я бы перехватывать каждый вызов, чтобы выполнить, вычислить некоторые, а затем только шляпы назвать оригинал выполнить, что-то вроде
/* This is how I would like to modify the method invokation */
SomeType m_OrgExecute;
{
AB a = new AB();
m_OrgExecute = GetByReflection(a.execute);
a.execute = MyExecute;
}
void MyExecute()
{
System.Console.Writeln("In MyExecute");
m_OrgExecute();
}
Возможно ли это?
У кого-нибудь есть решение этой проблемы?
Это не будет работать, если вызывающий выполнение() использует в AB. Он будет вызывать оригинальный метод на AB, если вы не передадите его ABChild. – RationalGeek