所以我通过de4dot运行了一个de4dot大学程序,然后用反射器对它进行反编译,当我在VS中运行它时,出现了下面的错误。
大会: System.Runtime.CompilerServices.Extension 错误'System.Runtime.CompilerServices.ExtensionAttribute'.不使用CS1112使用“this”关键字代替。客户端C:\Users\user\Desktop\333\as2\decom\AssemblyInfo.cs 15活动
我试着用这个和这个()替换代码,但是这只会导致其他问题。有人能解释一下我要用这个代替什么吗?我觉得我错过了一些显而易见的东西。
发布于 2016-05-22 21:17:36
当程序集包含扩展方法时,编译器会将[assembly: Extension]属性添加到程序集。这是自动发生的,根据您所看到的错误,编译器不希望您显式地执行它。假设反编译器输出的其余部分是正确的,请注释掉程序集级属性,您应该会很好。
尽管如此,您永远不应该假设反编译器的输出是正确的。
发布于 2016-05-21 07:48:16
您应该将this修饰符添加到方法中:
public static class FooExtensions
{
public static void DoSomething(this Foo foo)
{
...
}
}这使得它成为一种扩展方法。
一般来说,我不会尝试使用反编译器来“往返”代码--反编译程序可以用来查看编译器实际做了什么,但是在不同的情况下,结果是不可编译的。
https://stackoverflow.com/questions/37360266
复制相似问题