{"id":24774062,"url":"https://github.com/tim-maes/bindicate","last_synced_at":"2025-10-11T23:30:35.049Z","repository":{"id":199252042,"uuid":"702423451","full_name":"Tim-Maes/Bindicate","owner":"Tim-Maes","description":"An autowiring library for .NET.","archived":false,"fork":false,"pushed_at":"2025-02-17T07:56:50.000Z","size":118,"stargazers_count":31,"open_issues_count":3,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-27T06:50:25.378Z","etag":null,"topics":["attributes","autowiring","csharp","dependency","dependency-injection","injection","ioc","ioc-con","ioc-container","net8","service-collection","services"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Tim-Maes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["Tim-Maes"],"custom":["https://www.buymeacoffee.com/GRq3xSA"]}},"created_at":"2023-10-09T09:38:58.000Z","updated_at":"2025-08-21T17:03:25.000Z","dependencies_parsed_at":"2023-10-12T17:25:36.421Z","dependency_job_id":"dab068f7-d33c-45df-bade-9d20b34a011c","html_url":"https://github.com/Tim-Maes/Bindicate","commit_stats":null,"previous_names":["tim-maes/bindicate"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/Tim-Maes/Bindicate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tim-Maes%2FBindicate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tim-Maes%2FBindicate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tim-Maes%2FBindicate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tim-Maes%2FBindicate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Tim-Maes","download_url":"https://codeload.github.com/Tim-Maes/Bindicate/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tim-Maes%2FBindicate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279009392,"owners_count":26084580,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["attributes","autowiring","csharp","dependency","dependency-injection","injection","ioc","ioc-con","ioc-container","net8","service-collection","services"],"created_at":"2025-01-29T05:34:03.000Z","updated_at":"2025-10-11T23:30:34.758Z","avatar_url":"https://github.com/Tim-Maes.png","language":"C#","funding_links":["https://github.com/sponsors/Tim-Maes","https://www.buymeacoffee.com/GRq3xSA"],"categories":[],"sub_categories":[],"readme":"![image](https://github.com/Tim-Maes/Bindicate/assets/91606949/b2779c49-3d84-43ef-ad98-93f1108e3aa6)\n\n```\n'A blend of \"Bind\" and \"Indicate\"'.\n```\n![NuGet](https://img.shields.io/nuget/v/Bindicate.svg) ![NuGet](https://img.shields.io/nuget/dt/Bindicate.svg)\n\n## Features 🌟\n\n- Automatic registration of (keyed) services using custom attributes.\n- Automatic registration and configuration of options via `IOptions\u003cT\u003e`.\n- Provides clear visibility and reduces boilerplate code.\n- Simple integration with the built-in .NET IoC container.\n- Supports Decorators\n\n### Supported types\n\u003ccenter\u003e\n\n| **Type**           | **Available** |  **Keyed (.NET 8)** | Decorators |Interceptors | Activators |\n|--------------------|----------|------------------------------|---------|------------|------------|\n|AddTransient        |✔️        |✔️                            | ✔️|❌ |❌ |\n|TryAddTransient     |✔️        |❌                            | ❌| ❌|❌ |\n|AddScoped           |✔️        |✔️                             |✔️ | ❌| ❌|\n|TryAddScoped        |✔️        |❌                            |❌ |❌ |❌ |\n|AddSingleton        |✔️        |✔️                            | ✔️| ❌| ❌|\n|TryAddSingleton     |✔️        |❌                            |❌ |❌ |❌ |\n|TryAddEnumerable    |✔️         |❌                           | ❌| ❌|❌ |\n\u003c/center\u003e\n\n## Installation 📦\n\n### Via NuGet\n\n```bash\nInstall-Package Bindicate\n```\nor\n```\ndotnet add package Bindicate\n```\n## Usage\n\nYou can check out the [documentation](https://github.com/Tim-Maes/Bindicate/wiki) for examples and more information on how to use Bindicate.\n\n### Quick overview\n\nAdd this line in a project to register all decorated services.\nTo also [configure options](https://github.com/Tim-Maes/Bindicate/wiki/03.-Registering-Options), use `.WithOptions()`.\nYou can also use the `ServiceCollectionExtension` pattern and use `IConfiguration` as a parameters for your extension method if they have options to register.\n\n**Example in host project**\n```csharp\n// Register all decorated services for the current assembly\nbuilder.Services\n    .AddAutowiringForAssembly(Assembly.GetExecutingAssembly())\n    .Register();\n\n// Also register Keyed Services (.NET 8)\nbuilder.Services\n    .AddAutowiringForAssembly(Assembly.GetExecutingAssembly())\n    .ForKeyedServices()\n    .Register();\n\n// Also register Options as IOptions\u003cT\u003e\nbuilder.Services\n    .AddAutowiringForAssembly(Assembly.GetExecutingAssembly())\n    .ForKeyedServices()\n    .WithOptions(Configuration)  //Pass builder.Configuration here\n    .Register();\n```\n\n**Example usage**\n```csharp\n[AddScoped(typeof(IMyTaskRunner))]\npublic class TaskRunner : IMyTaskRunner\n{\n    public void Run()\n    {\n        // ...\n    }\n}\n\npublic interface IMyTaskRunner\n{\n    void Run();\n}\n```\n\n## License\n\nThis project is licensed under the MIT license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftim-maes%2Fbindicate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftim-maes%2Fbindicate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftim-maes%2Fbindicate/lists"}