/// <summary> /// Gets the service of the specified <paramref name="serviceType"/>; /// throws <see cref="InvalidOperationException"/>, if there is no such service. /// </summary> /// <param name="serviceProvider">The service provider to query for the service.</param> /// <param name="serviceType">Type of the service to get.</param> /// <param name="failIfNone">If set to <see langword="true"/>, an exception will be thrown /// if there is no requested service.</param> /// <returns>Requested service; /// <see langword="null" />, if <paramref name="failIfNone"/>==<see langword="false" /> /// and there is no requested service.</returns> /// <exception cref="InvalidOperationException">Thrown if <paramref name="failIfNone"/>==<see langword="true" /> /// and there is no requested service.</exception> public static object GetService(this IHasServices serviceProvider, Type serviceType, bool failIfNone) { var getServiceInternal = DelegateHelper.CreateDelegate <Func <IHasServices, bool, object> >( null, typeof(HasServicesExtensions), "GetServiceInternal", serviceType); return(getServiceInternal(serviceProvider, failIfNone)); }
/// <summary> /// Gets the service of specified type <typeparamref name="T"/>; /// throws <see cref="InvalidOperationException"/>, if there is no such service. /// </summary> /// <typeparam name="T">The type of service to get.</typeparam> /// <param name="serviceProvider">The service provider to query for the service.</param> /// <param name="failIfNone">If set to <see langword="true"/>, an exception will be thrown /// if there is no requested service.</param> /// <returns>Requested service; /// <see langword="null" />, if <paramref name="failIfNone"/>==<see langword="false" /> /// and there is no requested service.</returns> /// <exception cref="InvalidOperationException">Thrown if <paramref name="failIfNone"/>==<see langword="true" /> /// and there is no requested service.</exception> public static T GetService <T>(this IHasServices serviceProvider, bool failIfNone) where T : class { ArgumentValidator.EnsureArgumentNotNull(serviceProvider, "serviceProvider"); var service = serviceProvider.GetService <T>(); if (failIfNone && service == null) { throw new InvalidOperationException( string.Format(Strings.ExServiceNotFound, typeof(T).GetShortName())); } return(service); }
private static object GetServiceInternal <T>(this IHasServices serviceProvider, bool failIfNone) where T : class { return(serviceProvider.GetService <T>(failIfNone)); }
/// <summary> /// Gets the service of the specified <paramref name="serviceType"/>. /// </summary> /// <param name="serviceProvider">The service provider to query for the service.</param> /// <param name="serviceType">Type of the service to get.</param> /// <returns>The service of specified type.</returns> public static object GetService(this IHasServices serviceProvider, Type serviceType) { return(serviceProvider.GetService(serviceType, false)); }