/// <summary>
        /// Gets the query handlers.
        /// </summary>
        /// <param name="queryContract">The query contract.</param>
        /// <param name="commandContract">The command contract.</param>
        /// <param name="rootHandler">The root handler.</param>
        /// <returns>An array of query handlers.</returns>
        public IQueryHandler[] GetQueryHandlers(
            IQueryContract queryContract,
            ICommandContract commandContract,
            IQueryHandler rootHandler)
        {
            if (this.queryHandlers != null)
            {
                return(this.queryHandlers.ToArray());
            }

            if (this.serverServiceTypeProvider == null)
            {
                this.serverServiceTypeProvider = ServiceTypeProvider.Instance;
            }

            var queryHandlerCollectionFactory = this.serverServiceTypeProvider.QueryHandlerCollectionFactory;

            this.queryHandlers = queryHandlerCollectionFactory.Create(
                queryContract,
                commandContract,
                rootHandler);

            return(this.queryHandlers.ToArray());
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="DeviceServiceBootstrapper" /> class.
 /// </summary>
 /// <param name="serverServiceTypeProvider">The server service type provider.</param>
 internal DeviceServiceBootstrapper(IServerServiceTypeProvider serverServiceTypeProvider)
 {
     this.serverServiceTypeProvider = serverServiceTypeProvider;
 }