# DaprMetadataResourceBuilderExtensions Methods

- Package: [CommunityToolkit.Aspire.Hosting.Dapr](/reference/api/csharp/communitytoolkit.aspire.hosting.dapr.md)
- Type: [DaprMetadataResourceBuilderExtensions](/reference/api/csharp/communitytoolkit.aspire.hosting.dapr/daprmetadataresourcebuilderextensions.md)
- Kind: `Methods`
- Members: `3`

Provides extension methods for configuring dapr components with metadata

## WithMetadata(IResourceBuilder<IDaprComponentResource>, string, string)

- Name: `WithMetadata(IResourceBuilder<IDaprComponentResource>, string, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<IDaprComponentResource>`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire/blob/30a4b632065206d447183d2baabf6dfb3678d4af/src/CommunityToolkit.Aspire.Hosting.Dapr/DaprMetadataResourceBuilderExtensions.cs#L19-L32)

Adds static value metadata to the Dapr component

```csharp
public static class DaprMetadataResourceBuilderExtensions
{
    public static IResourceBuilder<IDaprComponentResource> WithMetadata(
        this IResourceBuilder<IDaprComponentResource> builder,
        string name,
        string value)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<IDaprComponentResource>`)
- `name` (`string`)
- `value` (`string`)

## WithMetadata(IResourceBuilder<IDaprComponentResource>, string, IValueProvider)

- Name: `WithMetadata(IResourceBuilder<IDaprComponentResource>, string, IValueProvider)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<IDaprComponentResource>`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire/blob/30a4b632065206d447183d2baabf6dfb3678d4af/src/CommunityToolkit.Aspire.Hosting.Dapr/DaprMetadataResourceBuilderExtensions.cs#L62-L87)

Adds a value provider as metadata to the Dapr component that will be resolved at runtime.

```csharp
public static class DaprMetadataResourceBuilderExtensions
{
    public static IResourceBuilder<IDaprComponentResource> WithMetadata(
        this IResourceBuilder<IDaprComponentResource> builder,
        string name,
        IValueProvider valueProvider)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<IDaprComponentResource>`)
  The resource builder for the Dapr component being configured.
- `name` (`string`)
  The name of the metadata property to add to the Dapr component configuration.
- `valueProvider` (`IValueProvider`)
  The value provider (e.g., EndpointReference, ConnectionStringReference) whose value will be resolved at runtime. The provider's value is stored as an environment variable and referenced through Dapr's secret key reference mechanism.

## Returns

`IResourceBuilder<IDaprComponentResource>` -- The resource builder instance.

## Remarks

This method enables dynamic configuration of Dapr components by:

- Creating a unique environment variable name based on the component and metadata names
- Storing the value provider reference for runtime resolution
- Configuring the metadata to use a secretKeyRef pointing to the environment variable

The environment variable name format is: {COMPONENT_NAME}_{METADATA_NAME} (uppercased, hyphens replaced with underscores). This approach allows for secure injection of dynamic values like endpoint URLs or connection strings that are only known at runtime.

## Examples

```csharp
var cache = builder.AddDaprComponent("cache", "state.redis")
    .WithMetadata("redisHost", redis.GetEndpoint("tcp"));
```

## WithMetadata(IResourceBuilder<IDaprComponentResource>, string, ParameterResource)

- Name: `WithMetadata(IResourceBuilder<IDaprComponentResource>, string, ParameterResource)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<IDaprComponentResource>`
- Source: [GitHub](https://github.com/CommunityToolkit/Aspire/blob/30a4b632065206d447183d2baabf6dfb3678d4af/src/CommunityToolkit.Aspire.Hosting.Dapr/DaprMetadataResourceBuilderExtensions.cs#L100-L135)

Adds a parameter resource as metadata to the Dapr component

```csharp
public static class DaprMetadataResourceBuilderExtensions
{
    public static IResourceBuilder<IDaprComponentResource> WithMetadata(
        this IResourceBuilder<IDaprComponentResource> builder,
        string name,
        ParameterResource parameterResource)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<IDaprComponentResource>`)
- `name` (`string`)
- `parameterResource` (`ParameterResource`)
