我使用WCF服务库运行Windows,需要重写OnOpening()来处理某些操作。
下面是我从ServiceHost继承的自定义类:
public class StratusServiceHost : ServiceHost
{
private Type type;
public StratusServiceHost(Type t, Uri baseAddresses) :
base(t, baseAddresses) { }
protected override void OnOpening()
{
base.OnOpening();
}
}下面是用来实例化我的Windows服务的主机类:
internal class StratusHost
{
static StratusServiceHost serviceHost = null;
public StratusHost()
{
}
internal static void Start()
{
if (serviceHost != null)
serviceHost.Close();
//serviceHost = new ServiceHost(typeof(StratusApiService));
serviceHost = new StratusServiceHost(typeof(StratusApiService));
serviceHost.Open();
}
internal static void Stop()
{
if (serviceHost != null)
{
serviceHost.Close();
serviceHost = null;
}
}
}我无法编译解决方案并获得以下错误:
StratusServiceHost.StratusServiceHost‘不包含接受1个参数的构造函数
但是,如果使用ServiceHost的文档,就没有一个只有一个参数的构造函数,而且serviceHost = new ServiceHost(typeof(StratusApiService))仍然工作。
ServiceHost构造函数:
protected ServiceHost();
public ServiceHost(object singletonInstance, params Uri[] baseAddresses);
public ServiceHost(Type serviceType, params Uri[] baseAddresses);发布于 2016-01-25 17:12:24
在构造函数的实现中,缺少了params关键字。试着改变:
public StratusServiceHost(Type t, Uri baseAddresses) :
base(t, baseAddresses) { }至:
public StratusServiceHost(Type t, params Uri baseAddresses) :
base(t, baseAddresses) { }params关键字允许您发送可变数量的参数--如果没有提供任何参数,则将其视为零长度数组。这就是为什么这一行起作用的原因:
serviceHost = new ServiceHost(typeof(StratusApiService));您不是真正调用一个参数构造函数,而是调用一个包含两个参数的构造函数。在这种情况下,您不需要为第二个参数提供任何内容。
https://stackoverflow.com/questions/34998052
复制相似问题