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

具有WCF接口的C#Windows服务中的全局对象,c#,.net,C#,.net,我有一个具有WCF接口的Windows服务。现在,由于这个WCF接口是从服务应用程序托管的,我在将核心对象定义为全局变量时遇到了一些问题 我已经在一个库中创建了主对象,当前它是一个带有静态实例成员的单例对象。WCF服务将与静态实例接口。虽然这很好,但我并不特别喜欢在每个方法中使用MyServiceBase.Instance。最优雅的方式是什么 我最好在程序Main中实例化我的对象,并通过我的应用程序使其可用。在我以前的Visual Basic 6.0中,我只会将其声明为全局静态。在MyServi

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

我已经在一个库中创建了主对象,当前它是一个带有静态实例成员的单例对象。WCF服务将与静态实例接口。虽然这很好,但我并不特别喜欢在每个方法中使用MyServiceBase.Instance。最优雅的方式是什么


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

在MyService基类中执行以下操作:

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。

为什么要进行否决投票?我是否没有正确理解这个问题?我没有投反对票,看起来还行,不知道是否还有其他“最佳实践”,这至少可以解决实例问题。我个人使用这种方法。。。但这并不意味着这是最好的方法。您可以通读其中一些答案,以获得更多想法: