Permalink
Fetching contributors…
Cannot retrieve contributors at this time
121 lines (100 sloc) 5.86 KB

Rezolver

Rezolver is a fast, efficient, extensible, open source IOC container with Asp.Net Core integration.

The nuget package has binaries specifically targeted to these .Net versions/standards:

  • .Net Standard 2.0
  • .Net Standard 1.1
  • .Net 4.5

Asp.Net Core Support

Asp.Net Core Support (v2.1 and below, on .Net Core or Full Framework) is provided by the Rezolver.Microsoft.AspNetCore.Hosting package, supported by the Rezolver.Microsoft.Extensions.DependencyInjection package which provides an implementation of the new .Net Core DI container abstraction.

The major/minor version number of these packages indicates the version of Asp.Net Core they support. So, Rezolver.Microsoft.AspNetCore.Hosting v2.1 is for Asp.Net Core v2.1.

Release Highlights

For full release notes for each version - see release notes on Github.

Feature Overview

Linked topics provide high level overviews and examples in our developer guide - click on them to find out more! (*)

Core Features

Enumerables, Arrays and Collections

Advanced

  • Generic Variance
    • Generic Contravariance (Action<IFoo> resolved for Action<Foo>)
    • Generic Covariance (Func<Foo> resolved for Func<IFoo>)
    • Mixed Variance (Func<IFoo, Bar> resolved for Func<Foo, IBar>)
    • Can be enabled and disabled globally and per-type
    • (As noted above) Enumerables and collections automatically include all generic variant matches
  • Decorators
    • Non-generic & generic constructor injection
    • Specialised generic (where a decorator for IFoo<> is redecorated by another decorator for IFoo<Bar> only when IFoo<Bar> is requested)
    • Enumerables of decorated instances
    • Decorator Delegates
    • Can decorate any of the built-in enumerable/collection types
  • Constrained generics
  • Child containers
    • Including child registration containers (lower-level overriding of registrations for similar but sibling containers)

Other

  • No 'prepare' phase - you can register targets in a container after you start using it
    • Note - services which have already been used cannot yet be replaced, but high-performance mutable containers are on their way
  • Extensible compiler framework
    • Expression tree compiler used by default
  • Extensible 'targets'
    • Can write your own code which produces objects when Rezolver matches it to a requested type

* If a topic isn't linked, it's probably because we're still working on the documentation, or because it's covered in the parent topic

Quick Links