首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖ServiceHost类

覆盖ServiceHost类
EN

Stack Overflow用户
提问于 2016-01-25 16:59:26
回答 1查看 206关注 0票数 0

我使用WCF服务库运行Windows,需要重写OnOpening()来处理某些操作。

下面是我从ServiceHost继承的自定义类:

代码语言:javascript
复制
public class StratusServiceHost : ServiceHost
    {
        private Type type;

        public StratusServiceHost(Type t, Uri baseAddresses) :
            base(t, baseAddresses) { }

        protected override void OnOpening()
        {
            base.OnOpening();
        }
    }

下面是用来实例化我的Windows服务的主机类:

代码语言:javascript
复制
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构造函数:

代码语言:javascript
复制
protected ServiceHost();
public ServiceHost(object singletonInstance, params Uri[] baseAddresses);
public ServiceHost(Type serviceType, params Uri[] baseAddresses);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-25 17:12:24

在构造函数的实现中,缺少了params关键字。试着改变:

代码语言:javascript
复制
public StratusServiceHost(Type t, Uri baseAddresses) :
        base(t, baseAddresses) { }

至:

代码语言:javascript
复制
public StratusServiceHost(Type t, params Uri baseAddresses) :
        base(t, baseAddresses) { }

params关键字允许您发送可变数量的参数--如果没有提供任何参数,则将其视为零长度数组。这就是为什么这一行起作用的原因:

代码语言:javascript
复制
serviceHost = new ServiceHost(typeof(StratusApiService));

您不是真正调用一个参数构造函数,而是调用一个包含两个参数的构造函数。在这种情况下,您不需要为第二个参数提供任何内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34998052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档