2

所以我通过de4dot运行了一个C#大学程序,然后reflector对其进行反编译,在VS中运行时出现以下错误。

[程序集:System.Runtime.CompilerServices.Extension]

错误 CS1112 不要使用“System.Runtime.CompilerServices.ExtensionAttribute”。请改用“this”关键字。客户端 C:\Users\user\Desktop\333\as2\decom\AssemblyInfo.cs 15 活动

我尝试用 this 和 this() 替换代码,但这只会导致其他问题。有人可以解释我要用“这个”代替什么吗?我觉得我在这里遗漏了一些明显的东西。

4

2 回答 2

8

当程序集包含扩展方法时,编译器将[assembly: Extension]属性添加到程序集。这会自动发生,并且根据您看到的错误,编译器不希望您明确执行此操作。假设反编译器输出的其余部分是正确的,注释掉程序集级属性,你应该没问题。

也就是说,你永远不应该假设反编译器的输出是正确的。

于 2016-05-22T21:17:36.847 回答
3

您打算将this修饰符添加到方法中:

public static class FooExtensions
{
    public static void DoSomething(this Foo foo)
    {
        ...
    }
}

这使它成为一种扩展方法。

一般来说,我不会尝试使用反编译器来“往返”代码 - 反编译器对于查看编译器实际做了什么很有用,但在各种情况下结果无法编译。

于 2016-05-21T07:48:16.130 回答