【发布时间】:2019-11-16 04:27:46
【问题描述】:
背景:
我正在使用Harmony Library 修改现有代码。现有的 C# 代码遵循以下结构:
public class ToModify
{
public override void Update()
{
foreach (StatusItemGroup.Entry entry in collection)
{
// I am trying to alter an operation at the end of this loop.
}
}
}
public class StatusItemGroup
{
public IEnumerator<Entry> GetEnumerator()
{
return items.GetEnumerator();
}
private List<Entry> items = new List<Entry>();
public struct Entry { }
}
由于这种情况,我必须修改正在生成的 IL 代码,为此我必须获取目标操作数的MethodInfo。这是目标:
IL_12B6: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext()
问题:
如何获取枚举器的MoveNext 方法的MethodInfo?
我的尝试:
我能想到的一切都产生了null 的结果。这是我最基本的尝试:
MethodInfo targetMethod = typeof(IEnumerator<StatusItemGroup.Entry>).GetMethod("MoveNext");
我不明白为什么这不起作用,我不知道我需要做什么才能正确获得MethodInfo。
【问题讨论】:
标签: c# reflection cil enumerator ienumerator