具有WCF接口的C#Windows服务中的全局对象
我有一个具有WCF接口的Windows服务。现在,由于这个WCF接口是从服务应用程序托管的,我在将核心对象定义为全局变量时遇到了一些问题 我已经在一个库中创建了主对象,当前它是一个带有静态实例成员的单例对象。WCF服务将与静态实例接口。虽然这很好,但我并不特别喜欢在每个方法中使用MyServiceBase.Instance。最优雅的方式是什么具有WCF接口的C#Windows服务中的全局对象,c#,.net,C#,.net,我有一个具有WCF接口的Windows服务。现在,由于这个WCF接口是从服务应用程序托管的,我在将核心对象定义为全局变量时遇到了一些问题 我已经在一个库中创建了主对象,当前它是一个带有静态实例成员的单例对象。WCF服务将与静态实例接口。虽然这很好,但我并不特别喜欢在每个方法中使用MyServiceBase.Instance。最优雅的方式是什么 我最好在程序Main中实例化我的对象,并通过我的应用程序使其可用。在我以前的Visual Basic 6.0中,我只会将其声明为全局静态。在MyServi
我最好在程序
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。为什么要进行否决投票?我是否没有正确理解这个问题?我没有投反对票,看起来还行,不知道是否还有其他“最佳实践”,这至少可以解决实例问题。我个人使用这种方法。。。但这并不意味着这是最好的方法。您可以通读其中一些答案,以获得更多想法: