Simple Injector (original) (raw)
Simple Injector is an open source Dependency Injection (DI) library for .NET
Vision
The Simple Injector Contributors are passionate software designers and our DI library supports our approach to software development
Best Practice
We promote best practice and have designed Simple Injector to steer the developer toward the pit of success
Simple
We love simple and have designed an API that is simple to get started with and powerful enough to handle large enterprise applications
Free
Simple Injector is free to use and will always be free
Blazingly Fast
Simple Injector is highly optimized for performance and concurrent use
Advanced Generics
Simple Injector has the most advanced support for generic typing of all the DI libraries
Powerful Diagnostics
Simple Injector has the most powerful diagnostics system of all the .NET DI libraries
Extensibility
Simple Injector lets you expand and enhance the object construction pipeline with your own custom features
Well Documented
Simple Injector's comprehensive documentation explains how to implement DI with SOLID design principles
Great Community
We believe in good design and best practices and love talking about it
Simple Injector is simple
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 free
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.
It doesn't get much faster than this
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.
The most advanced support for generic programming of all DI libraries
.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.
Simple Injector has a powerful diagnostics system
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.
Dependency Injection with Simple Injector using SOLID design principles
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.