Table of Contents

Class ServiceProviderExtensions

Namespace
Arc4u.Dependency
Assembly
Arc4u.Dependency.dll

Extension methods on IServiceProvider to resolve services without throwing when they cannot be created.

public static class ServiceProviderExtensions
Inheritance
ServiceProviderExtensions
Inherited Members

Methods

TryGetService(IServiceProvider, Type, string, out object?)

Tries to resolve a keyed service of the given type. Any exception raised while resolving (including a missing registration) is swallowed.

public static bool TryGetService(this IServiceProvider provider, Type type, string name, out object? value)

Parameters

provider IServiceProvider

The service provider.

type Type

The type of the service.

name string

The key under which the service is registered.

value object

The resolved service, or null when it cannot be resolved.

Returns

bool

true when a service was resolved; otherwise false.

TryGetService<T>(IServiceProvider, string, out T?)

Tries to resolve a keyed service of type T. Any exception raised while resolving is swallowed.

public static bool TryGetService<T>(this IServiceProvider provider, string name, out T? service)

Parameters

provider IServiceProvider

The service provider.

name string

The key under which the service is registered.

service T

The resolved service, or null when it is not registered or cannot be created.

Returns

bool

true when a service was resolved; otherwise false.

Type Parameters

T

The type of the service.

TryGetService<T>(IServiceProvider, out T?)

Tries to resolve a service of type T. Any exception raised while resolving is swallowed.

public static bool TryGetService<T>(this IServiceProvider provider, out T? service)

Parameters

provider IServiceProvider

The service provider.

service T

The resolved service, or null when it is not registered or cannot be created.

Returns

bool

true when a service was resolved; otherwise false.

Type Parameters

T

The type of the service.

Examples

if (serviceProvider.TryGetService<IMyOptionalService>(out var service))
{
    service!.DoWork();
}