为什么我的静态类没有在ASP.NET MVC中初始化?

Dan*_* T. 2 c# iis static constructor asp.net-mvc-2

我有一个ASP.NET MVC项目,其中有一个静态类来初始化一些AutoMapper映射:

static class AutoMappingConfiguration
{
    static AutoMappingConfiguration()
    {
        SetupMappings();
    }

    static void SetupMappings()
    {
        AutoMap.CreateMap<Product, ProductDTO>();
        // more mappings
    }
}
Run Code Online (Sandbox Code Playgroud)

在静态构造函数中设置断点会告诉我,当我运行项目时它永远不会被击中.我必须在以下方面明确调用该方法MvcApplication.Application_Start():

AutoMappingConfiguration.SetupMappings();
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么这个静态类不是由ASP.NET MVC构造的?这是否与IIS的"动态编译"性质有关?如果是这样,我是否必须显式调用静态方法,或者是否有某种方法来配置项目以初始化静态类?

ste*_*nar 11

除非创建了类的实例或调用了任何静态方法,否则不会调用静态构造函数,这是记录 /预期的行为.因此,您必须调用该静态方法(或类中的任何其他方法)来调用它.