我创建了一个 WCF 服务,该服务从数据库中读取并发回结果。出于性能原因,我想在服务启动时缓存表(这发生在 Windows 服务 OnStart 中)。但是 WCF 中没有构造函数之类的东西(对吗?)所以我想出的最好的办法是创建一个 Init() 函数并像下面这样调用它:
protected override void OnStart(string[] args)
{
mServiceHost = new ServiceHost(typeof(DLSService.DLSService), new Uri("http://localhost:8000/DLS"));
mServiceHost.AddServiceEndpoint(typeof(DLSService.IDLSService), new BasicHttpBinding(), "ServicesHost");
((DLSService.DLSService)mServiceHost.SingletonInstance).Init();
mServiceHost.Open();
}
但是使用 SingletonInstance 并转换为正确的类型对我来说似乎并不那么优雅。是否有更优雅的方法可以在 WCF 中实现类似构造函数的功能?