C#反汇编默认命名空间模块类

时间:2016-12-13 10:04:24

标签: c#

我确定这很简单,但我无法找到解释。

使用ILSpy或ILDASM反汇编.net时,默认名称空间中有一个名为<module>的类。

编译器为什么以及如何将其放在那里? 我有这个:

using abc;
using System;

internal class <Module>
{
    static <Module>()
    {
        AssemblyLoader.Attach();
    }
}
internal interface ISomething
{
}

这不是标准声明。如果我重新创建C#项目,我该如何添加? 另外我看到它的方式是在静态构造函数中并且将在入口点之前执行,所以如果我将AssemblyLoader.Attach();放在我的Main()或Program的静态构造函数中(I&#39;我使用控制台应用程序模板)这应该做的,对吧?

1 个答案:

答案 0 :(得分:3)

您无法从VS或C#代码直接向<Module>添加代码。你可以从IL那里做到。

如果您反汇编代码,可以放置一个静态.cctor,它最终会成为<Module>构造函数。它必须在任何.class

之外
.method private hidebysig specialname rtspecialname static void .cctor () cil managed 
{
    //put your code here
}

您可以在我的回购邮件github上看到an example

或使用Fody的工具,特别是ModuleInit