[英]C# AsyncStateMachine Decompile
我有近乎工作的代碼,但OnRequest
方法充滿了錯誤,我認為它是我認為的編譯代碼。 有什么幫助使這段代碼成為人類可讀的代碼嗎?
[AsyncStateMachine(typeof(Service1.<OnRequest>d__24))]
public Task OnRequest(object sender, SessionEventArgs e)
{
Service1.<OnRequest>d__24 <OnRequest>d__;
<OnRequest>d__.<>4__this = this;
<OnRequest>d__.e = e;
<OnRequest>d__.<>t__builder = AsyncTaskMethodBuilder.Create();
<OnRequest>d__.<>1__state = -1;
AsyncTaskMethodBuilder <>t__builder = <OnRequest>d__.<>t__builder;
<>t__builder.Start<Service1.<OnRequest>d__24>(ref <OnRequest>d__);
return <OnRequest>d__.<>t__builder.Task;
}
或者我在這里無助,我不知道那是什么,我想在最壞的情況下解釋如果我無法解決這個問題。
對於類型和變量名,字符<
和>
不是有效的C#
,但它們在CIL
代碼中完全有效。
ILSpy沒有“規范化”名稱,因此您獲得的代碼不可編譯,但您可以刪除特殊字符來修復它:
[AsyncStateMachine(typeof(Service1.OnRequestd__24))]
public Task OnRequest(object sender, SessionEventArgs e)
{
Service1.OnRequestd__24 OnRequestd__;
OnRequestd__.__this = this;
OnRequestd__.e = e;
OnRequestd__.t__builder = AsyncTaskMethodBuilder.Create();
OnRequestd__.__state = -1;
AsyncTaskMethodBuilder t__builder = OnRequestd__.t__builder;
t__builder.Start<Service1.OnRequestd__24>(ref OnRequestd__);
return OnRequestd__.t__builder.Task;
}
如果您還實現引用類型,這將完美編譯:
public class Service1
{
public struct OnRequestd__24 : IAsyncStateMachine
{
public ObjectPoolAutoTest __this;
public SessionEventArgs e;
public AsyncTaskMethodBuilder t__builder;
public int __state;
public void MoveNext() => throw new NotImplementedException();
public void SetStateMachine(IAsyncStateMachine stateMachine) => throw new NotImplementedException();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.