Hi Aggarwal,
A Provider or Class that's bound to context isn't instantiated until it is resolved (either by `@inject()`, `app.get()`, or through other means). Hence, it's possible to instantiate the Provider by calling "await this.get(`${key}`)".
Though do note that, by default, Bindings are always bound in the Transient scope; This means that, every time the Class or Provider Binding is resolved, a new instance will be created.
If only a single instance is desired, the code can be modified as follows:
```
import {BindingType} from '@loopback/core';
// ...
this.bind(`${key}`).toProvider(<ProviderClass>).inScope(BindingType.SINGLETON);
```
Though also do note that Singletons mean that any `@inject()` (or other similar DI decorators) will only be resolved once. A way around this is to use Getters (i.e. `@inject.getter()`), which allows dynamic dependency resolution.