- Simple
- Fast
- Strongly typed all the way
- C#
- Extensible
- Immutable
- Build time validation
|
CastleWindsor |
Autofac |
Unity |
StructureMap |
Bmbsqd |
ISimpleTransientClass |
734 ms |
502 ms |
335 ms |
294 ms |
32 ms |
IDependantTransientClass |
3318 ms |
1527 ms |
1022 ms |
575 ms |
58 ms |
IDecoratedService |
4761 ms |
2090 ms |
1387 ms |
547 ms |
59 ms |
var builder = new ContainerBuilder();
// Auto dependency injection
builder.Register<ISomeComponent,SomeComponent>();
// Singleton scoped
builder.Register<ISomeComponent,SomeComponent>().SingletonScoped();
// Auto dependency injection with ISomeComponent decorator
builder.Register<ISomeComponent,SomeComponent>().With<SomeDecorator>();
// Multiple decorators
builder.Register<ISomeComponent,SomeComponent>().
With<LocalCacheDecorator>().
With<MemcacheDecorator>();
// Register static value
builder.Register( "Hello World" );
// Register a named static value
builder.Register( "smtp.gmail.com", "smtp-host" );
// Register a factory for ISomeComponent
builder.Register<ISomeComponent>( c => new SomeComponent() );
var container = builder.Build();
var component = container.Resolve<ISomeComponent>();
// Resolve named component
var smtpHost = container.Resolve<string>( "smtp-host" );