# LifecycleHookServiceCollectionExtensions Methods

- Package: [Aspire.Hosting](/reference/api/csharp/aspire.hosting.md)
- Type: [LifecycleHookServiceCollectionExtensions](/reference/api/csharp/aspire.hosting/lifecyclehookservicecollectionextensions.md)
- Kind: `Methods`
- Members: `4`

Provides extension methods for adding lifecycle hooks to the `DependencyInjection.IServiceCollection`.

## AddLifecycleHook(IServiceCollection)

> **Obsolete:** Use EventingSubscriberServiceCollectionExtensions.AddEventingSubscriber instead.

- Name: `AddLifecycleHook(IServiceCollection)`
- Modifiers: `extension`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/bd20f904cde09ecb9c9ae5116a6f13614bf2d7c2/src/Aspire.Hosting/Lifecycle/LifecycleHookServiceCollectionExtensions.cs#L23-L24)

Adds a distributed application lifecycle hook to the service collection.

```csharp
public static class LifecycleHookServiceCollectionExtensions
{
    public static void AddLifecycleHook<T>(
        this IServiceCollection services)
    {
        // ...
    }
}
```

## Parameters

- `services` (`IServiceCollection`)
  The `DependencyInjection.IServiceCollection` to add the distributed application lifecycle hook to.

## ATS metadata

### Ignored by ATS

- Reason: IServiceCollection is not exported to ATS, and generic lifecycle hook registration is not ATS-compatible. Use IDistributedApplicationBuilder.addEventingSubscriber instead.

## AddLifecycleHook(IServiceCollection, Func<IServiceProvider, T>)

> **Obsolete:** Use EventingSubscriberServiceCollectionExtensions.AddEventingSubscriber instead.

- Name: `AddLifecycleHook(IServiceCollection, Func<IServiceProvider, T>)`
- Modifiers: `extension`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/bd20f904cde09ecb9c9ae5116a6f13614bf2d7c2/src/Aspire.Hosting/Lifecycle/LifecycleHookServiceCollectionExtensions.cs#L48-L49)

Adds a distributed application lifecycle hook to the service collection.

```csharp
public static class LifecycleHookServiceCollectionExtensions
{
    public static void AddLifecycleHook<T>(
        this IServiceCollection services,
        Func<IServiceProvider, T> implementationFactory)
    {
        // ...
    }
}
```

## Parameters

- `services` (`IServiceCollection`)
  The service collection to add the hook to.
- `implementationFactory` (`Func<IServiceProvider, T>`)
  A factory function that creates the hook implementation.

## ATS metadata

### Ignored by ATS

- Reason: IServiceCollection is not exported to ATS, and IServiceProvider factory registration is not ATS-compatible. Use IDistributedApplicationBuilder.addEventingSubscriber instead.

## TryAddLifecycleHook(IServiceCollection)

> **Obsolete:** Use EventingSubscriberServiceCollectionExtensions.TryAddEventingSubscriber instead.

- Name: `TryAddLifecycleHook(IServiceCollection)`
- Modifiers: `extension`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/bd20f904cde09ecb9c9ae5116a6f13614bf2d7c2/src/Aspire.Hosting/Lifecycle/LifecycleHookServiceCollectionExtensions.cs#L35-L36)

Attempts to add a distributed application lifecycle hook to the service collection.

```csharp
public static class LifecycleHookServiceCollectionExtensions
{
    public static void TryAddLifecycleHook<T>(
        this IServiceCollection services)
    {
        // ...
    }
}
```

## Parameters

- `services` (`IServiceCollection`)
  The `DependencyInjection.IServiceCollection` to add the distributed application lifecycle hook to.

## ATS metadata

### Ignored by ATS

- Reason: IServiceCollection is not exported to ATS, and generic lifecycle hook registration is not ATS-compatible. Use IDistributedApplicationBuilder.tryAddEventingSubscriber instead.

## TryAddLifecycleHook(IServiceCollection, Func<IServiceProvider, T>)

> **Obsolete:** Use EventingSubscriberServiceCollectionExtensions.TryAddEventingSubscriber instead.

- Name: `TryAddLifecycleHook(IServiceCollection, Func<IServiceProvider, T>)`
- Modifiers: `extension`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/bd20f904cde09ecb9c9ae5116a6f13614bf2d7c2/src/Aspire.Hosting/Lifecycle/LifecycleHookServiceCollectionExtensions.cs#L61-L62)

Attempts to add a distributed application lifecycle hook to the service collection.

```csharp
public static class LifecycleHookServiceCollectionExtensions
{
    public static void TryAddLifecycleHook<T>(
        this IServiceCollection services,
        Func<IServiceProvider, T> implementationFactory)
    {
        // ...
    }
}
```

## Parameters

- `services` (`IServiceCollection`)
  The service collection to add the hook to.
- `implementationFactory` (`Func<IServiceProvider, T>`)
  A factory function that creates the hook implementation.

## ATS metadata

### Ignored by ATS

- Reason: IServiceCollection is not exported to ATS, and IServiceProvider factory registration is not ATS-compatible. Use IDistributedApplicationBuilder.tryAddEventingSubscriber instead.
