2014-04-10 12 views
5

Có cách nào để có được ServiceName và InstanceName được cung cấp cho dịch vụ TopShelf sau khi gọi hàm TopShelf.HostFactory.Run() không?Nhận ServiceName/Instance sau khi gọi TopShelf.HostFactory.Run

Một tùy chọn là chỉ cần kéo trực tiếp từ dòng lệnh args.

Nhưng tò mò nếu nó TopShelf thể hiện những đặc tính này.

Sau khi đào thông qua nguồn TopShelf, không nhìn thấy điểm/thuộc tính hiển thị.

Trả lời

2

Bạn có thể lấy tên dịch vụ (và các tài sản khác như mô tả và tên hiển thị) như sau:

 HostFactory.Run(x => 
     { 
      x.Service((ServiceConfigurator<MyService> s) => 
      { 

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

Hoặc nếu MyService bạn thực hiện 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) { } 
} 

Nếu bạn cần tên dịch vụ bên MyService chỉ chuyển nó thành tham số hoặc thuộc tính của hàm tạo.

Các vấn đề liên quan