Я отлаживаю большое приложение, которое я не писал, которое работает в Windows, но зависает на Linux + MONO. Приложение состоит из ядра C#, который содержит класс ScriptCompiler, построенный на основе 700 строк, который компилирует скрипты C# во время выполнения.Получить тип родительского объекта метода invoked?
После компиляции всех «скриптов» ScriptCompiler просматривает все сборки и ищет методы Configure() для вызова. Один из этих методов настройки висит при запуске в системе Linux с использованием Mono. Вот соответствующий отрывок:
for (int i = 0; i < types.Length; ++i)
{
MethodInfo m = types[i].GetMethod(method, BindingFlags.Static | BindingFlags.Public);
if (m != null)
{
invoke.Add(m);
}
}
последовало вскоре по
invoke.Sort(new CallPriorityComparer());
for (int i = 0; i < invoke.Count; ++i)
{
invoke[i].Invoke(null, null);
}
Это огромное приложение, так что я не могу просто пойти вносить изменения волей-неволей. То, что я хотел бы сделать, это вставить строку в этот цикл, который выплескивает имя (или тип, я думаю) объекта, метод Configure которого в настоящее время вызывается в stdout. Что-то вроде:
invoke[i].ParentObject.GetType();
(очевидно, это неверно, но мы надеемся, что это будет иметь смысл).
Возможно ли это?
Отлично, спасибо. – nathanvy