the ninja of .net dependency injectors
Clone or download
Pull request Compare This branch is 4 commits ahead, 372 commits behind ninject:master.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib Added support for fluent constructor selection May 28, 2011
logos Updated to the latest build scripts Apr 26, 2011
nuget Added summary for nuget package Dec 26, 2011
src Added documentation for WeakReferenceEqualityComparer May 26, 2013
tools Updated Nuget to 2.2 Feb 13, 2013
.gitignore internal refactoring of the multi interface fluent syntax implementation Dec 26, 2011
Build-NinjectAndExtensions.bat Improved releasing scripts Mar 26, 2012
Build-NinjectAndExtensionsWithReleaseTag.bat Added .Net 4.5, SL5 and WP 7.1 builds Jan 10, 2012
HowToBuild.txt Improved description in HowToBuild.txt Mar 27, 2012
LICENSE.txt Updated licensing terms to reflect dual-license with Ms-PL Mar 23, 2009
Ninject with Silverlight and WP7 Unittesting.sln Changed Silverlight unit tests to use xUnit Apr 17, 2011
Ninject.build Added .net 4.5 medium trust build Dec 5, 2012
Ninject.include Added path.packages to build script Mar 21, 2013
Ninject.sln test and fix for CommonServiceLocator adapter WRT non-keyed request May 24, 2013
PushAllGoogleCode.bat Added NuGet only push Nuget and Google code scripts May 23, 2012
PushAllGoogleCode.build Added NuGet only push Nuget and Google code scripts May 23, 2012
PushAllNuGet.bat Added NuGet only push Nuget and Google code scripts May 23, 2012
PushAllNuget.build Added NuGet only push Nuget and Google code scripts May 23, 2012
PushGoogleCode.bat Improved releasing scripts Mar 26, 2012
PushGoogleCode.build Added NuGet only push Nuget and Google code scripts May 23, 2012
PushNuGet.bat Added NuGet only push Nuget and Google code scripts May 23, 2012
PushNuGet.build Added NuGet only push Nuget and Google code scripts May 23, 2012
README.markdown No commit message Feb 14, 2011
ReleaseNotes.txt Bugfix: When an object that is the scope of another object is release… Mar 25, 2013
UnzipDependencies.cmd Fixed that the wrong error message is shown when there are multiple b… Nov 17, 2010
build-alpha.cmd Added batch files to create pre release nuget packages Dec 19, 2011
build-beta.cmd Added batch files to create pre release nuget packages Dec 19, 2011
build-rc1.cmd Added batch files to create pre release nuget packages Dec 19, 2011
build-release.cmd Updated to NuGet 1.3 May 3, 2011
build.cmd Improved build scripts and cleaned the project files Nov 1, 2010

README.markdown

This is the master repository for Ninject, the lightweight and lightning-fast .NET dependency injection framework. Ninject is currently in version 2.2.

If you're reading blog posts or books from before 2010, they're likely to be regarding version 1, which has some key improvements, summarised in the wiki

Ninject is a lightning-fast, ultra-lightweight dependency injector for .NET applications. It helps you split your application into a collection of loosely-coupled, highly-cohesive pieces, and then glue them back together in a flexible manner. By using Ninject to support your software's architecture, your code will become easier to write, reuse, test, and modify.

Ninject is:

  1. Focused. Too many existing dependency injection projects sacrifice usability for features that aren't often necessary. Each time a feature is added to Ninject, its benefit is weighed against the complexity it adds to everyday use. Our goal is to keep the barrier to entry - the baseline level of knowledge required to use Ninject - as low as possible. Ninject has many advanced features, but understanding them is not required to use the basic features.

  2. Sleek. Framework bloat is a major concern for some projects, and as such, all of Ninject's core functionality is in a single assembly with no dependencies outside the .NET base class library. This single assembly's footprint is approximately 85KB when compiled for release.

  3. Fast. Instead of relying on reflection for invocation, Ninject takes advantage of lightweight code generation in the CLR. This can result in a dramatic (8-50x) improvement in performance in many situations.

  4. Precise. Ninject helps developers get things right the first time around. Rather than relying on XML mapping files and string identifiers to wire up components, Ninject provides a robust domain-specific language. This means that Ninject takes advantage of the capabilities of the language (like type-safety) and the IDE (like IntelliSense and code completion).

  5. Agile. Ninject is designed around a component-based architecture, with customization and evolution in mind. Many facets of the system can be augmented or modified to fit the requirements of each project.

  6. Stealthy. Ninject will not invade your code. You can easily isolate the dependency on Ninject to a single assembly in your project.

  7. Powerful. Ninject includes many advanced features. For example, Ninject is the first dependency injector to support contextual binding, in which a different concrete implementation of a service may be injected depending on the context in which it is requested.

Everything else is in Extensions

Yes, sounds slim and focused, but where is the support for all the features that the competitors have?

Generally, they are maintained as specific focused extensions with owners who keep them in sync and pull in new ideas and fixes fast. These are summarized on the extensions section of the project website. Most are hosted alongside the core project right here.