16

在 .NET 中,有一些东西可以在加载程序集时自动运行引用程序集中的一段代码。

例如,您可以有一个用某种属性装饰的类,该属性位于项目 Foo(A 类库)中。而项目 Bar(A Web App) 只是引用项目 Foo。当 Bar 加载时,Foo 中的装饰代码会以某种方式运行。我相信这是一个较新的功能。

谁能告诉这个功能叫什么??

更新:谢谢湿婆!不是模块初始化。虽然它引导我找到正确的答案。PreApplicationStartMethod 并且在 .NET 中受支持!谢谢大家!!

4

5 回答 5

8

原来我正在寻找PreApplicationStartMethod!谢谢大家!

于 2013-11-04T20:02:17.657 回答
3

碰巧,您是指模块初始化程序吗?它们能够完成您描述的事情,但似乎 C# 不支持它们。它们是 CLR 的一部分,是的,但不是 C# 语言本身的一部分。

一些与进一步信息和研究的链接:

http://blogs.msdn.com/b/junfeng/archive/2005/11/19/494914.aspx

C# 中的模块初始化器

.Net:加载程序集时运行代码- 感谢J...指出此链接

于 2013-11-04T19:41:20.320 回答
3

您可能还看过Fody。Fody 是“用于编织 .net 程序集的可扩展工具”,您可以将其安装为 nuget 包。fody 有一个名为Module Initializers的插件。在其他答案中已经提到了module initializers ,它在引擎盖下使用了,但消除了填充。

从文档中:

它的作用:在目标程序集中查找一个类,以ModuleInitializer下列形式命名:

public static class ModuleInitializer
{
    public static void Initialize()
    {
        //Init code
    }
}

然后它将以下代码注入目标程序集的模块初始化程序。当程序集加载到内存中时将调用此代码

static <Module>()
{
    ModuleInitializer.Initialize();
}
于 2013-11-04T19:50:34.870 回答
2

如果没有错,那么您正在寻找“模块初始化程序”。看看这个_

于 2013-11-04T19:42:36.757 回答
1

您在寻找模块初始化器吗?

于 2013-11-04T19:42:59.843 回答