void DoSomething(Data data){
var myDataRequest = new DataRequest();
myDataRequest.ID = data.ID
}
我有以下
methodIL.Emit(OpCodes.Ldloc_1);
methodIL.Emit(OpCodes.Ldarg_0);
methodIL.Emit(OpCodes.Callvirt, getMethodForData);
methodIL.Emit(OpCodes.Callvirt, setMethodForDataRequest);
methodIL.Emit(OpCodes.Nop);
但这似乎不起作用
代码,我真的很想生成:
static Response TestRequestResponse(RequestData requestData) {
var wrapper = new WrapperResponse<Response>();
var request = new Request() { };
request.RequestID = requestData.RequestID;
request.Value = requestData.Value;
request.ID = requestData.ID;
request.OnReply(wrapper.Handle);
request.WaitForResponse(true);
request.TimeOut(TimeSpan.FromSeconds(30));
request.Send();
return wrapper.Response;
}
我在这里有以下代码:http: //pservicebusext.codeplex.com/SourceControl/changeset/view/4f8a4f1190ae#PServiceBus.RemoteProxy%2fPServiceBus.RemoteProxy%2fESBProxy.cs
有一个名为 CreateProxy() 的方法假设生成上面的代码。但是该部分循环并为该方法生成 get 和 set 无法正常工作。它从不设置请求对象的值,它总是保留为空
我解决了这个问题,我从使用 OpCodes.Ldarg_0 更改为 OpCodes.Ldarg_1
methodIL.Emit(OpCodes.Ldloc_1);
methodIL.Emit(OpCodes.Ldarg_1);
methodIL.Emit(OpCodes.Callvirt, getMethodForData);
methodIL.Emit(OpCodes.Callvirt, setMethodForDataRequest);
methodIL.Emit(OpCodes.Nop);