Simple Injector is an easy-to-use Dependency Injection (DI) library for .NET 4.5, .NET Core, .NET 5, .NET Standard, UWP, Mono, and Xamarin. Simple Injector is easily integrated with frameworks such as Web API, MVC, WCF, ASP.NET Core and many others. It’s easy to implement the Dependency Injection pattern with loosely coupled components using Simple Injector.
Simple Injector has a carefully selected set of features in its core library to support many advanced scenarios. Simple Injector supports code-based configuration and comes with built-in diagnostics services for identifying many common configuration problems.
Simple Injector is open source and published under the permissive MIT license. Simple Injector is, and always will be, free. Free to use. Free to copy. Free to change. Free.
All contributions to Simple Injector are covered by a comprehensive contributors license agreement to help ensure that all of the code contributed to the Simple Injector project cannot later be claimed as belonging to any individual or group.
More ...Simple Injector is highly optimized for performance and concurrent use. Simple Injector is thread-safe and its lock-free design allows it to scale linearly with the number of available processors and threads. You will find the speed of resolving an object graph comparable to hard-wired object instantiation.
This means that you, the developer, can stay focused on the important stuff: unit testing, bug fixing, new features etc. You will never need to worry about the time it takes to construct an object graph. You will never need to monitor the library's performance or make special adjustments to the configuration in order to improve its performance.
But don't believe us - take a look at the independent benchmarks out there on the internet.
More ....NET has superior support for generic programming and Simple Injector has been designed to make full use of it. Simple Injector arguably has the most advanced support for handling generic types of all DI libraries. Simple Injector can handle any generic type and implementing patterns such as Decorator, Mediator, Strategy and Chain Of Responsibility is simple.
Aspect-Oriented Programming is easy with Simple Injector's advanced support for generic types. Generic Decorators with generic type constraints can be registered with a single line of code and can be applied conditionally using predicates. Simple Injector can handle open-generic types, closed-generic types and partially-closed open-generic types.
More ...Simple Injector's diagnostics system can help identify configuration errors. This system can be queried visually within the debugger or programmatically at runtime.
The Diagnostic Services work by analyzing all of the information that can be statically determined by the library.
More ...Simple Injector has been developed using modern proven development practices and principles such as TDD and SOLID. Simple Injector has an extensive set of unit tests giving a high level of confidence for new releases.
We spend a lot of time on the Simple Injector discussion forum and on Stack Overflow, answering questions, giving help and feedback to our users and peers.
Issues are normally picked up within 24 hours of being raised on the site and feedback is always given - problems are not ignored for extended periods of time.
More ...Simple Injector has comprehensive and up-to-date documentation: getting started, object lifetime management, integration guides, generic typing, advanced scenarios, diagnostic API, and the Simple Injector pipeline are all described in the documentation. Anything that is not explicitly covered in the documentation is, most probably, implementation specific, and for these things our community is here to help.
Many developers praise Simple Injector for its comprehensive documentation that explains how to implement Dependency Injection with Simple Injector using SOLID design principles.
Go take a look for yourself.
More ...