首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用TopShelf.HostFactory.Run后获取ServiceName/实例

调用TopShelf.HostFactory.Run后获取ServiceName/实例
EN

Stack Overflow用户
提问于 2014-04-10 20:45:36
回答 1查看 3K关注 0票数 6

在调用ServiceName ()之后,是否有方法将TopShelf和InstanceName提供给TopShelf服务?

一种选择是直接从命令行args中提取它。

但是好奇的是,TopShelf是否公开了这些属性本身。

在挖掘TopShelf的源代码之后,看不到公开的spot/属性。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-14 13:45:17

您可以获得服务名称(以及其他属性,如描述和显示名称),如下所示:

代码语言:javascript
复制
        HostFactory.Run(x =>
        {
            x.Service((ServiceConfigurator<MyService> s) =>
            {

                s.ConstructUsing(settings =>
                {
                    var serviceName = settings.ServiceName;
                    return new MyService();
                });
            }
         }

或者您的MyService实现了ServiceControl

代码语言:javascript
复制
        HostFactory.Run(x =>
        {
            x.Service<MyService>((s) =>
            {
                var serviceName = s.ServiceName;

                return new MyService();
            });
         }
/***************************/

class MyService : ServiceControl
{
    public bool Start(HostControl hostControl) {  }

    public bool Stop(HostControl hostControl)  {  }
}

如果需要MyService内部的服务名称,只需将其作为构造函数参数或属性传递即可。

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

https://stackoverflow.com/questions/22998650

复制
相关文章

相似问题

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