在调用ServiceName ()之后,是否有方法将TopShelf和InstanceName提供给TopShelf服务?
一种选择是直接从命令行args中提取它。
但是好奇的是,TopShelf是否公开了这些属性本身。
在挖掘TopShelf的源代码之后,看不到公开的spot/属性。
发布于 2014-11-14 13:45:17
您可以获得服务名称(以及其他属性,如描述和显示名称),如下所示:
HostFactory.Run(x =>
{
x.Service((ServiceConfigurator<MyService> s) =>
{
s.ConstructUsing(settings =>
{
var serviceName = settings.ServiceName;
return new MyService();
});
}
}或者您的MyService实现了ServiceControl
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内部的服务名称,只需将其作为构造函数参数或属性传递即可。
https://stackoverflow.com/questions/22998650
复制相似问题