所以我通过de4dot运行了一个C#大学程序,然后反射器对其进行反编译,当我在VS中运行它时出现以下错误。
[程序集:System.Runtime.CompilerServices.Extension]
错误 CS1112 不使用'System.Runtime.CompilerServices.ExtensionAttribute'.使用"this"关键词相反。 客户端 C:\用户\用户\桌面\333\as2\decom\AssemblyInfo.cs 15 活动
我尝试用这个和这个()替换代码,但这只会导致其他问题。有人可以解释一下我要用"这个"代替什么吗?我觉得我在这里错过了一些明显的东西。
当程序集包含扩展方法时,编译器会将 [assembly: Extension]
属性添加到程序集中。 这是自动发生的,并且根据您看到的错误,编译器不希望您明确执行此操作。 假设反编译器输出的其余部分是正确的,注释掉程序集级属性,您应该没问题。
也就是说,您永远不应该假设反编译器的输出是正确的。
你要向方法添加this
修饰符:
public static class FooExtensions
{
public static void DoSomething(this Foo foo)
{
...
}
}
这使它成为一种扩展方法。
一般来说,我不会尝试使用反编译器来"往返"代码 - 反编译器对于查看编译器实际执行的操作很有用,但是在各种情况下,结果是不可编译的。