gpt4 book ai didi

c# - 反射器和编译器生成的代码

转载 作者:行者123 更新时间:2023-11-30 20:12:24 25 4
gpt4 key购买 nike

我有一个在 Reflector 中反汇编的 dll,然后生成一个类。该类包含无法在 Visual Studio 中编译的代码。

我认为它是 leagl IL 代码,但我如何从中生成更高级别的 c#。

似乎 yield 和 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;

最佳答案

那个 IL 来自迭代器 block 。手动编写迭代器可怕,迭代器 block 中的底层 IL 证明了编译器为您所做的事情的真实性。 感激您不必自己做!

您可以尝试主要从 MoveNext() 将它们放在一起,但不要指望奇迹。您可能还会发现重命名字段(以摆脱像 <> 前缀这样的东西)有很长的路要走。

但是;我期望最好的办法是理解代码试图做什么,并停止尝试简单地窃取 借用 他们的实现。

关于c# - 反射器和编译器生成的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2667094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com