我确定这很简单,但我无法找到解释。
使用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;我使用控制台应用程序模板)这应该做的,对吧?
答案 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。