0

只是想确认我的理解是正确的。如果我对服务使用单实例模式:

[服务行为(InstanceContextMode=InstanceContextMode.Single)]

并且该服务从另一个具有静态构造函数的程序集调用一个类,该构造函数仅在第一次调用该服务时才被调用?我正在谈论的构造函数设置了相当数量的 AutoMapper 映射,我只希望在第一次调用服务时产生这个开销。

更进一步,如果我有两个不同的服务,并且它们都是共享类,我是否正确地认为静态构造函数仍然只调用一次?

最好的

射线

4

1 回答 1

0

InstanceContextMode 与触发静态构造函数的次数之间没有联系。每个应用程序域调用一次静态构造函数。因此,如果您的服务托管在一个应用程序域中,那么您的构造函数将被调用一次。据我了解,您使用构造函数来注册 AutoMapper 配置......对我来说这不是一个好方法。假设您的服务托管在 IIS 上,您最好创建一个 Global.asax 文件,然后在 Application_Start 方法中运行映射注册代码。当然,您可以先将其包装在一些静态方法中。

希望能帮助到你!

于 2013-01-03T10:41:08.287 回答