在重命名泛型类型的字段时,Mono.Cecil未解析令牌

时间:2015-01-04 16:38:22

标签: c# .net mono.cecil

当我读取程序集并重命名包含在泛型类型中的字段,然后编写程序集时,方法内对该字段的所有引用都将成为未解析的标记。我知道如果重命名它们,方法引用也会发生同样的情况。

// This is a generic class.
TypeDefinition type = GetSomeGenericType();

// This field is referenced from a method in this type.
type.Fields[0].Name = "_anotherName";
assemblyDefinition.Write(...);

由此产生的组件不起作用。这是预期的行为吗?

我发现如果我在编写程序集之前手动将指令的操作数更改为FieldDefinition而不是FieldReference,则一切正常。但这不应该由Cecil自动处理,就像它处理非泛型类型一样吗?

修改

事实证明,当我重命名字段时,指令操作数对它的引用将会中断,因为Resolve()方法返回null。还在寻找一个合适的解决方案。

0 个答案:

没有答案