2017-07-20 17 views
3

私はほとんど作業コードを持っていますが、OnRequestメソッドはエラーでいっぱいです。私はコンパイルされたコードだと思っています。このコードを人間が読めるコードにするための助け?C#AsyncStateMachine逆コンパイル

[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; 
     } 

それともここに無力だ、私はそれが何であるかを知らないと私は、このためのソリューションを持つことができない場合、私は最悪のケースで説明したいと思います。

+0

あなたのジェネリックは変数名の後に来ます。 d を試してください。 – Ares

+0

IL Spy [should supported](http://community.sharpdevelop.net/blogs/danielgrunwald/archive/2012/04/16/decompiling-async-await.aspx) 'async' /' await'を逆コンパイルします。 – GSerg

+2

@Aresジェネリックではありません。デコンパイラが正しく理解していない(ひどく)逆コンパイルされた自動生成識別子です。 –

答えて

2

<>は、タイプと変数名に有効な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(); 
    } 
}