带有WCF接口的C#Windows服务中的全局对象

本文关键字:全局 对象 服务 C#Windows WCF 接口 带有 | 更新日期: 2023-09-27 18:26:21

我有一个带有WCF接口的Windows服务。现在,由于这个WCF接口是从服务应用程序托管的,我在将核心对象定义为全局变量时遇到了一些问题。

我已经在一个库中创建了主对象,目前它是一个带有静态实例成员的singleton。WCF服务将与静态实例接口。虽然这很好,但我并不是每个方法中都特别喜欢名为MyServiceBase.Istance的方法。做这件事最优雅的方法是什么?

我最好在程序Main中实例化我的对象,并通过我的应用程序使其可用。在我以前的Visual Basic 6.0时代,我只会将其声明为全局静态。

带有WCF接口的C#Windows服务中的全局对象

在MyServiceBase类中执行以下操作:

public class MyServiceBase  {
   static MyServiceBase  _instance;
   public MyServiceBase () {
      if ( _instance == null ) {
         // do the initialization
         _instance = this; 
      }
   } 
}

然后初始化包括调用构造函数,甚至不在任何地方存储引用。

// just create a new object which causes the initialization code to execute
new MyServiceBase ();

现在您不必每次调用都执行MyServiceBase.Instance。