簡體   English   中英

C#AsyncStateMachine反編譯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM