只想确认我的理解是正确的。如果我将单实例模式用于服务:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
并且此服务从另一个具有静态构造函数的asssembly调用一个类,该构造函数仅在第一次调用此类服务时被调用?我正在谈论的构造函数设置了相当数量的AutoMapper映射,我只是在第一次调用服务时才想要这种开销。
进一步说,如果我有两个不同的服务,并且它们都是共享类,我是否正确静态构造函数仍然只被调用一次?
最佳
雷
答案 0 :(得分:0)
InstanceContextMode与触发静态构造函数的次数之间没有任何关联。每个Application Domain调用一次静态构造函数。因此,如果您的服务托管在一个应用程序域中,那么您的构造函数将被调用一次。 据我所知,你使用构造函数来注册AutoMapper配置......对我而言,这不是一个好方法。假设您的服务托管在IIS上,您最好创建一个Global.asax文件,然后在Application_Start方法中运行映射注册代码。对于cource,你可以先用一些静态方法将它包装起来。
希望它有所帮助!