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が正しく機能していません。リクエストオブジェクトの値を設定することはなく、常にnullのままになります
問題を解決し、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);