簡體   English   中英

反射器和編譯器生成的代碼

[英]Reflector and compiler generated code

我有一個dll,在Reflector中將其反匯編,然后生成一個類。 該類包含無法在Visual Studio中編譯的代碼。

我認為這是有前途的IL代碼,但是如何從中生成更高級別的c#。

似乎yield和IEnumerator生成類似<>1__state;東西<>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;

該IL來自迭代器塊。 迭代器是可怕的手動編寫,並從迭代器塊底層IL證明了什么樣的編譯器為你做的現實。 不勝感激,您不必自己動手!

您可以嘗試主要通過MoveNext()將它們組合在一起,但是不要指望奇跡。 您可能還會發現,重命名字段(以消除諸如<>前綴之類的內容)很長的路要走。

然而; 希望做的最好的事情理解的代碼試圖做的,並停止試圖簡單地 其實現。

您應該查看HTML Agility Pack

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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