'A blend of "Bind" and "Indicate"'.
- Automatic registration of (keyed) services using custom attributes.
- Automatic registration and configuration of options via
IOptions<T>. - Provides clear visibility and reduces boilerplate code.
- Simple integration with the built-in .NET IoC container.
- Supports Decorators
| Type | Available | Keyed (.NET 8) | Decorators | Interceptors | Activators |
|---|---|---|---|---|---|
| AddTransient | ✔️ | ✔️ | ✔️ | ❌ | ❌ |
| TryAddTransient | ✔️ | ❌ | ❌ | ❌ | ❌ |
| AddScoped | ✔️ | ✔️ | ✔️ | ❌ | ❌ |
| TryAddScoped | ✔️ | ❌ | ❌ | ❌ | ❌ |
| AddSingleton | ✔️ | ✔️ | ✔️ | ❌ | ❌ |
| TryAddSingleton | ✔️ | ❌ | ❌ | ❌ | ❌ |
| TryAddEnumerable | ✔️ | ❌ | ❌ | ❌ | ❌ |
Install-Package Bindicateor
dotnet add package Bindicate
You can check out the documentation for examples and more information on how to use Bindicate.
Add this line in a project to register all decorated services.
To also configure options, use .WithOptions().
You can also use the ServiceCollectionExtension pattern and use IConfiguration as a parameters for your extension method if they have options to register.
Example in host project
// Register all decorated services for the current assembly
builder.Services
.AddAutowiringForAssembly(Assembly.GetExecutingAssembly())
.Register();
// Also register Keyed Services (.NET 8)
builder.Services
.AddAutowiringForAssembly(Assembly.GetExecutingAssembly())
.ForKeyedServices()
.Register();
// Also register Options as IOptions<T>
builder.Services
.AddAutowiringForAssembly(Assembly.GetExecutingAssembly())
.ForKeyedServices()
.WithOptions(Configuration) //Pass builder.Configuration here
.Register();Example usage
[AddScoped(typeof(IMyTaskRunner))]
public class TaskRunner : IMyTaskRunner
{
public void Run()
{
// ...
}
}
public interface IMyTaskRunner
{
void Run();
}This project is licensed under the MIT license.