/// <summary> /// Initializes an instance of <see cref="HyperServiceHostContainer"/> with the specified <see cref="IServiceHostFactory"/> and <see cref="IServiceHostExceptionHandler"/> implementations. /// </summary> /// <param name="hostFactory">The <see cref="IServiceHostFactory"/> that is used to create the <see cref="ServiceHost"/> object to wrap.</param> /// <param name="timeoutExceptionHandler">The <see cref="IServiceHostExceptionHandler"/> implementation to use when a <see cref="TimeoutException"/> is thrown.</param> /// <param name="communicationExceptionHandler">The <see cref="IServiceHostExceptionHandler"/> implementation to use when a <see cref="CommunicationException"/> is thrown.</param> /// <param name="genericExceptionHandler">The <see cref="IServiceHostExceptionHandler"/> implementation to use when an <see cref="Exception"/> is thrown that is not a <see cref="TimeoutException"/> or a <see cref="CommunicationException"/>.</param> public HyperServiceHostContainer(IServiceHostFactory hostFactory, IServiceHostExceptionHandler timeoutExceptionHandler, IServiceHostExceptionHandler communicationExceptionHandler, IServiceHostExceptionHandler genericExceptionHandler) { if (hostFactory == null) { throw new ArgumentNullException(nameof(hostFactory)); } if (timeoutExceptionHandler == null) { throw new ArgumentNullException(nameof(timeoutExceptionHandler)); } if (communicationExceptionHandler == null) { throw new ArgumentNullException(nameof(communicationExceptionHandler)); } if (genericExceptionHandler == null) { throw new ArgumentNullException(nameof(genericExceptionHandler)); } _hostFactory = hostFactory; _timeoutExceptionHandler = timeoutExceptionHandler; _communicationExceptionHandler = communicationExceptionHandler; _genericExceptionHandler = genericExceptionHandler; // By default, this property is true, making the container a one stop shop for ServiceHost management. Users can turn the feature off if they have to though. DisposeServiceOnStop = true; }
/// <summary> /// Initializes an instance of <see cref="HyperServiceHostContainer"/> with the specified factory method and <see cref="IServiceHostExceptionHandler"/> implementations. /// </summary> /// <param name="factory">The delegate that is invoked to create the <see cref="ServiceHost"/> object to wrap.</param> /// <param name="timeoutExceptionHandler">The <see cref="IServiceHostExceptionHandler"/> implementation to use when a <see cref="TimeoutException"/> is thrown.</param> /// <param name="communicationExceptionHandler">The <see cref="IServiceHostExceptionHandler"/> implementation to use when a <see cref="CommunicationException"/> is thrown.</param> /// <param name="genericExceptionHandler">The <see cref="IServiceHostExceptionHandler"/> implementation to use when an <see cref="Exception"/> is thrown that is not a <see cref="TimeoutException"/> or a <see cref="CommunicationException"/>.</param> public HyperServiceHostContainer(Func <ServiceHost> factory, IServiceHostExceptionHandler timeoutExceptionHandler, IServiceHostExceptionHandler communicationExceptionHandler, IServiceHostExceptionHandler genericExceptionHandler) : this(new ServiceHostFactoryMethodWrapper(factory), timeoutExceptionHandler, communicationExceptionHandler, genericExceptionHandler) { }
/// <summary> /// Initializes an instance of <see cref="HyperServiceHostContainer"/> with the specified <see cref="IServiceHostFactory"/> and <see cref="IServiceHostExceptionHandler"/> implementations. /// </summary> /// <param name="hostFactory">The <see cref="IServiceHostFactory"/> that is used to create the <see cref="ServiceHost"/> object to wrap.</param> /// <param name="exceptionHandler">The <see cref="IServiceHostExceptionHandler"/> implementation to use when any is thrown.</param> public HyperServiceHostContainer(IServiceHostFactory hostFactory, IServiceHostExceptionHandler exceptionHandler) : this(hostFactory, exceptionHandler, exceptionHandler, exceptionHandler) { }
/// <summary> /// Initializes an instance of <see cref="HyperServiceHostContainer"/> with the specified factory method and <see cref="IServiceHostExceptionHandler"/> implementation. /// </summary> /// <param name="factory">The delegate that is invoked to create the <see cref="ServiceHost"/> object to wrap.</param> /// <param name="exceptionHandler">The <see cref="IServiceHostExceptionHandler"/> implementation to use when any is thrown.</param> public HyperServiceHostContainer(Func <ServiceHost> factory, IServiceHostExceptionHandler exceptionHandler) : this(factory, exceptionHandler, exceptionHandler, exceptionHandler) { }