'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 Bindicate
or
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.