如何在Mono.Cecil中为MethodReference创建GenericParameter返回类型?

时间:2012-02-24 22:51:05

标签: .net il mono.cecil

我正在尝试使用Mono.Cecil重现以下IL:

call !!0 [mscorlib]System.Threading.Interlocked::CompareExchange<class [System]System.ComponentModel.PropertyChangedEventHandler>(!!0&, !!0, !!0)

当我使用Mono.Cecil检查这个IL时,我看到该指令的操作数是GenericInstanceMethod,它包含一个MethodReference类型的ElementMethod。此MethodReference又具有GenericParameter类型的返回类型。

我想手工创建相同的对象,但似乎达到了捕获22。要创建GenericParameter,我需要一个IGenericParameterOwner,它似乎与上面的MethodReference完全相同。所以我想将MethodReference传递给GenericParameter构造函数。但是,我不能在没有TypeReference的情况下为返回类型创建MethodReference,我假设它应该是GenericParameter。

我该如何解决这个问题?我误解了什么?

1 个答案:

答案 0 :(得分:4)

这似乎是API的问题。

解决此问题的一种简单方法是将TypeReference传递给void作为MethodReference的ReturnType,并将ReturnType更改为以后创建的GenericParameter。