Contains extension methods for ITargetContainer to create targets which alias others by different types.
This implementation of IMemberBindingBehaviour binds all publicly writable properties and public fields to values obtained from the container.
An IMemberBindingBehaviour which binds all public instance fields on new instances to services from the container.
An IMemberBindingBehaviour which binds all non-indexer publicly writeable instance properties on new instances to services from the container.
Overrides the BindAllMembersBehaviour to provide explicit per-member bindings.
Builds on the ContainerBase base class to introduce thread-safe caching of compiled targets so they are only compiled once per requested type.
Only creatable through inheritance.
Contains extension methods for the CombinedContainerConfig class which simplify the process of adding and replacing IContainerConfig objects which set options and register well-known container services.
An ITargetContainerConfig which contains zero or or more other ITargetContainerConfig objects. Configurations can depend on others, and this collection ensures that they are applied in the correct order.
Represents a binding specifically to a class constructor, optionally with an additional set of MemberBindings to be used to initialise a new instance's properties or fields directly.
The standard IOC container class in Rezolver.
Starting point for implementations of IContainer - only creatable through inheritance.
Standard implementation of the IContainerScope interface.
Standard extensions for the IContainerScope
The best way to add a decorator to your target container is to use the extension methods in DecoratorTargetContainerExtensions - which provide simple shortcuts for creating decoration registrations.
Extension methods for ITargetContainer designed to simplify the registration of DelegateTarget and its numerous generic variants.
This type is only used when using expressions as targets(via the ExpressionTarget type) - it's functions serve no actual purpose other than to act as hooks to create specific ITarget objects in place of static code.
All the functions will throw a NotImplementedException if called at runtime.
Extensions for to simplify registering expressions in an ITargetContainer.
A special type of ITargetContainer which stores targets (and potentially other containers) which are specifically keyed either to a particular open generic type or a closed generic built from it.
Represents a binding (i.e. like that produced by IMemberBindingBehaviour) to a collection-like property via dynamic collection initialiser.
Represents the binding of an ITarget to a property or field of a given type.
Not to be confused with the type of the same name from the System.Linq.Expressions namespace, although they are technically equivalent.
Static accessor for the common member binding behaviours provided by Rezolver, also provides an entry point to build custom binding behaviours using the fluent API exposed by IMemberBindingBehaviourBuilder<TInstance> and MemberBindingBuilder<TInstance, TMember> - via the For<TInstance>() method.
Created through the Bind<TMember>(Expression<Func<TInstance, TMember>>).
Represents a binding to a method whose arguments will be supplied by ITarget instances.
Provides the Populate(ITargetContainer, IServiceCollection) extension method which allows
easy importing of all registrations in an
into a Rezolver ITargetContainer.
Extensions for registering multiple targets individually and against the same type
Contains extension methods for getting and setting container options which are used to control the behaviour, chiefly, of the various well-known ITargetContainer implementations.
An IContainer which can override the resolve operations of another. This is useful when you have a core application-wide container, with some objects being customised based on some ambient information, e.g. configuration, MVC Area/Controller, Brand (in a multi-tenant application for example) or more.
Represents a binding between a method parameter and an ITarget
Implements projections of IEnumerables from one type to another
Effectively, this daisy chains one enumerable into another via something similar to a Linq Select.
Standard implementation of IResolveContext
Options for using Rezolver as the DI container for Asp.Net Core web applications.
Extensions for the IRootTargetContainer interface.
Implementation of the IScopedContainer interface.
All of the extension methods ultimately create a ScopedTarget
Extension methods for the ITargetContainer interface which simplify the registration of singletons.
Provides static factory methods (including extension methods) for creating numerous types of targets from the Rezolver.Targets namespace.
Contains registration extensions for the ITargetContainer type
An ITargetContainer that stores multiple targets in a list.
This is not a type that you would typically use directly in your code, unless you are writing custom logic/behaviour for ITarget registration.
Given a type, this produces an enumerable of all types to be sought from an ITargetContainer whose targets might produce a compatible instance.
In particular, this class is responsible for handling generic type matching, including variance.
Contains an extension to test the validity of ICompiledTarget objects.
Provides an abstraction for creating objects based on a given IResolveContext - this is the ultimate target of all Resolve(IResolveContext) calls in the standard container implementations within the Rezolver framework.
The primary IOC container interface in the Rezolver framework.
This is an IContainer-like object (resolving functionality is provided through the extension methods in the ContainerScopeResolveExtensions class) which provides lifetime scoping for disposable objects, and scoped singleton functionality for any object.
Implementations of this interface must, in their implementation of IScopeFactory, create a child scope of this scope.
For any type
T, there exists a list of zero or more other types with which
it is compatible when covariance is supported. This index provides the mechanism
by which Rezolver can perform this reverse lookup.
Describes a type which discovers and creates property/field bindings, typically for use when creating a new instance.
An object responsible for building an IMemberBindingBehaviour for instances of the type
Captures the state for a call to Resolve(IResolveContext) (or TryResolve(IResolveContext, out Object)), including the container on which the operation is invoked, any IScopedContainer that might be active for the call (if different), and the type that is being resolved from the IContainer.
Interface for the root-most target container, which typically 'owns' all the top-level registrations required by an application.
This builds on the ITargetContainer interface by adding the ICovariantTypeIndex interface too, as well as events which allow an application to listen for target and target container registrations within the root.
Many applications will use such a container as the root container to use as anchors for things like scoped singletons.
Represents an object from which a scope can be created
Stores and retrieves ITarget instances, keyed by the type of service that the targets are registered against.
This is where all your service registrations will ultimately go.
A configuration callback for instances of IRootTargetContainer.
Marker interface for an ITargetContainerConfig which is responsible for configuring a specific type
of object/behaviour/service/option. (Determined by
Interface for an object which handles an event of a particular type (
raised from an ITargetContainer.
Describes different ways in which objeects interact with scopes.
Specifies the scope that the object produced by a target should be tracked within.