2

Reflectorで逆アセンブルするdllがあり、クラスを生成します。このクラスには、VisualStudioでコンパイルされないコードが含まれています。

私はそれをleaglILコードと見なしますが、これからより高いレベルのc#を生成するにはどうすればよいですか。

イールドとIEnumerator<>1__state;は、コンパイルされないILのようなものを生成するようです。

この種のILを含むリフレクターからクラスを生成する方法を知っている人はいますか?

これを解決するリフレクターアドインはありますか?

    private sealed class <Rule_Document>d__0 : IEnumerable<HtmlTag>, IEnumerable, IEnumerator<HtmlTag>, IEnumerator, IDisposable
    {
        private int <>1__state;
        private HtmlTag <>2__current;
        public HtmlParser <>4__this;
        private int <>l__initialThreadId;
        public HtmlTag <htmlTag>5__1;
4

2 に答える 2

7

そのILはイテレータブロックからのものです。イテレータは手動で書き込むのが恐ろしいものであり、イテレータブロックからの基になるILは、コンパイラがあなたのために行うことの現実を証明しています。自分でやる必要がなかったことに感謝します!

あなたは主にからそれをまとめることを試みるMoveNext()ことができますが、奇跡を期待しないでください。<>また、フィールドの名前を変更する(プレフィックスなどを削除する)ことも大いに役立つ場合があります。

でも; 最善の方法は、コードがをしようとしているのかを理解し、単に実装を 借用しようとするのをやめることだと思います。

于 2010-04-19T11:56:16.723 に答える
0

HTML Agility Packを参照してください。

于 2010-04-19T12:52:53.493 に答える