Есть ли способ зарегистрировать один и тот же объект дважды в StructureMap?

У меня есть некоторые функции, которые я включаю в свое приложение .NET, которое использует StructureMap. Я хочу зарегистрировать функции для двух целей.

* Отобразить текущее состояние  **all**   `IFeatures`  на диагностической странице.
* Используйте определенные экземпляры в конструкторах сервисов, которые полагаются на определенные реализации  `IFeature`

Вот моя настройка. Мне интересно, правильно ли я это делаю? Есть ли лучший способ, которым я мог бы это сделать?

```
class HotNewFeature : IFeature { ... }

class ServiceThatUsesFeature 
{
    public ServiceThatUsesFeature(HotNewFeature hotNewFeature) { ... }
}

// Type registry setup
For().Singleton().Use();
For().Singleton().Add(c => c.GetInstance);
For().Singleton().Use());

// Get all instances on the diagnostics page:
IEnumerable features = ServiceLocator.Current.GetAllInstances();

```

Я ожидаю, что на диагностической странице  `features`  в этом случае будет содержать  `IEnumerable`  с одним элементом, экземпляр  `HotNewFeature` .

Используйте функцию  `Scan` , чтобы зарегистрировать все типы, которые реализуют IFeature. Это удовлетворит вашу первую потребность, чтобы отобразить список на странице диагностики.

Если службе требуется определенная реализация, она должна объявить конкретный тип, который ему нужен ( `HotNewFeature` ) вместо интерфейса ( `IFeature` ) в конструкторе. Вы сделали это правильно в своем примере. В этот момент вам больше не нужно ничего делать в StructureMap. Если вы запросите  ServiceThatUsersFeature из StructureMap и полагаетесь на конкретный класс ( `HotNewFeature` ), StructureMap будет знать, как создать экземпляр этого конкретного класса.