我正在尝试启动一个负责处理事情的项目。我把这个类称为CentralLogic
类。当这个开始时,我想开始一个主机。主机在App.Config
文件中有一些设置,如baseAddress和端点。
此主机可以与此CentralLogic
类进行交互。我想将实例化的对象传递给这个主机。
目前,我正在尝试这样的事情:
centralLogic = new CentralLogic();
ServiceHost host = new ServiceHost(centralLogic, typeof(KLAService));
using (host)
{
host.Open();
//Start a WPF UI. Also makes sure the host stays open
//as long as the UI stays open.
Application app = new Application();
app.Run(new ConfigurationWPF.MainWindow(centralLogic));
host.Close();
}
KLAService的定义如下:
public class KLAService : IKLAService
{
CentralLogic centralLogic;
public KLAService(CentralLogic theCentralLogic)
{
centralLogic= theCentralLogic;
}
.....
}
这不起作用(ServiceHost的创建错误,无论是参数数量还是第二个参数)。我可以通过以下方式启动它而无需参数:
ServiceHost host = new ServiceHost(typeof(KLAService));
所以,问题是我不知道如何将对象传递给服务器。我该怎么做?
编辑:我尝试了以下内容:centralLogic = new CentralLogic();
KLAService klaService = new KLAService(centralLogic);
using (ServiceHost host = new ServiceHost(klaService))
{
host.Open();
Application app = new Application();
app.Run(new ConfigurationWPF.MainWindow(centralLogic));
host.Close();
}
这会弹出InvalidOperationException
:
为了使用一个带有a的ServiceHost构造函数 服务实例,必须设置服务的InstanceContextMode 到InstanceContextMode.Single。这可以通过 ServiceBehaviorAttribute。否则,请考虑使用 采用Type参数的ServiceHost构造函数。