我需要枚举 .NET 模块中的所有方法并检查它们是否有小或大标题。我决定使用强大的dnlib .NET 模块处理库。
有一个dnlib.DotNet.Writer.MethodBody
类指示 tiny/fat 方法标头(请参阅IsTiny()
和IsFat()
)。但是,我不知道如何访问这个类。
该类位于 Writer 命名空间中 - 让我们使用 Writer 侦听器:
public void OnWriterEvent(ModuleWriterBase writer, ModuleWriterEvent evt)
{
请注意,很容易枚举所有方法并获取另一个 MethodBody
方法,即命名空间中的一个Emit
:
foreach (TypeDef type in module.GetTypes())
{
foreach (MethodDef method in type.Methods)
{
dnlib.DotNet.Emit.MethodBody body = method.MethodBody;
}
}
}
不幸的是,这个类并没有透露任何有用的东西。我相信类似于以下伪代码的东西应该可以工作:
public void OnWriterEvent(ModuleWriterBase writer, ModuleWriterEvent evt)
{
foreach (TypeDef type in module.?)
{
foreach (? method in type.?)
{
dnlib.DotNet.Writer.MethodBody body = method.?;
}
}
}