Skip to content
This repository has been archived by the owner on Jan 20, 2024. It is now read-only.

Features

Nikolay Pianikov edited this page Feb 23, 2017 · 51 revisions
  • .NETStandard 1.0, .net core 1.0/framework 4.5/portable and higher

  • Simple. Supports fluent API.

  • Fast.

  • Easiest way together TDD.

  • Supports configuring of IoC containers via Json, CSharp configuration files, attributes, fluent API. Also it is easy to ceate your own formats.

  • Supports injection of dependencies specified by:

      **contract** - on or more types
    
      **state** - ordered type(s) of state
    
      **tag**  - represented by the value(s)
    
  • Supports hierarchy of containers.

  • Fully extensible by overriding implementations of behaviors described via the interfaces in the contracts assembly.

  • It is not necessary to have any additional references to IoC libraries, thus nearly any code could work according to IoC pattern without any additional changes. For example, this sample project does not know about IoC at all.

  • It provides an ability to use states during resolving. For example.

  • There is a set of pluggable features:

      ChildContainers - supports the resolving of child containers.
    
      Lifetimes - supports lifetimes (Singleton, AutoDisposing, PerContainer, PerResolve, PerThread, PerState).
    
      Scopes - supports scopes (Internal, Global).
    
      KeyComaprers - supports key comparers (AnyTag, AnyState, AnyTagAnyState).
    
      Enumerables - supports resolving via IEnumerable<>. Resolve all elements of specified contract.
    
      Observables - supports resolving via IObservable<>. Resolve all elements of specified contract.
    
      Tasks - supports injection via Task<>.
    
      Resolvers - supports resolving via IResolver<>, IProvider<>, Func<>.
    
      Cache - uses cache to optimize a performance.
    

And others. For example the feature "Tasks" allows injection of tasks.

Clone this wiki locally