# IPlacementDirector Methods

[Type overview](/orleans/docs/api/csharp/microsoft.orleans.core/orleans.runtime.placement.iplacementdirector/)

## GetPlacementHint(Dictionary&lt;string, object&gt;, SiloAddress[]) {#getplacementhint-system-collections-generic-dictionary-string-object-orleans-run-288283f5}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.core/orleans.runtime.placement.iplacementdirector/methods/getplacementhint-system-collections-generic-dictionary-string-object-orleans-run-288283f5/)

[Source](https://github.com/dotnet/orleans/blob/e4e752cedecc2976811db49802c7a999b1f1c704/src/Orleans.Core/Placement/IPlacementDirector.cs#L36-L44)

```csharp
public static SiloAddress GetPlacementHint(Dictionary<string, object> requestContextData, SiloAddress[] compatibleSilos)
```

Gets the placement hint from the provided request context data, if present and valid.

### Parameters

- `requestContextData` (`Dictionary<string, object>`): The request context data.
- `compatibleSilos` (`SiloAddress[]`): The compatible silos.

### Returns

The placement hint, if present and valid, or `null` otherwise.

## OnAddActivation(PlacementStrategy, PlacementTarget, IPlacementContext) {#onaddactivation-orleans-runtime-placementstrategy-orleans-runtime-placement-plac-8042f2e3}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.core/orleans.runtime.placement.iplacementdirector/methods/onaddactivation-orleans-runtime-placementstrategy-orleans-runtime-placement-plac-8042f2e3/)

```csharp
public abstract Task<SiloAddress> OnAddActivation(PlacementStrategy strategy, PlacementTarget target, IPlacementContext context)
```

Picks an appropriate silo to place the specified target on.

### Parameters

- `strategy` (`PlacementStrategy`): The target's placement strategy.
- `target` (`PlacementTarget`): The grain being placed as well as information about the request which triggered the placement.
- `context` (`IPlacementContext`): The placement context.

### Returns

An appropriate silo to place the specified target on.
