On Github bergziege / praesi-ioc-container
IOC/DI
Welche Container gibt es
Welchen Container wir wirklich verwenden sollten ;-)
Spring.net
DryIOC
Unity
spring.net oder einen anderen Container mit cooler ORM Integration
unity, autofac, ... auf jeden Fall kein Schwergewicht mit 1001 Funktion, die nicht benötigt wird.
<object id="ContractorCoachingViewModel"
          type="Com.QueoFlow.TrackingtoolLogistik.WPF.Ui.UserControls.ContractorCoaching.ViewModels.ContractorCoachingViewModel, TrackingtoolLogistik.WPF"
          singleton="false">
    <property name="ProjectService"
              ref="projectService" />
    <property name="OrderImportService"
              ref="orderImportService" />
    <property name="ProjectReportService"
              ref="projectReportService" />
    <property name="SpecialPeriodService"
              ref="specialPeriodService" />
                public T Create<T>(params object[] arguments) where T : class {
    IApplicationContext context = ContextRegistry.GetContext();
    string typeName = typeof(T).Name;
    typeName = typeName.Substring(0, 1).ToLower() + typeName.Substring(1);
    T viewModel;
    if (arguments.Length > 0) {
        viewModel = context.GetObject(typeName, arguments) as T;
    } else {
        viewModel = context.GetObject(typeName) as T;
    }
    return viewModel;
}
                    Unser bisheriger Standardcontainer mit sehr guter NHibernate Integration und Transaction Management sowie sehr umfargreichen AOP Möglichkeiten.
var c = new Container(); c.Register<IClient, SomeClient>(); c.Register<IService, SomeService>(); // somewhere else IClient client = c.Resolve<IClient>();
Ein sehr schneller Container, der teilweise in WPF Anwendungen eingesetzt wird, wenn keine weitere DB Anbindung notwendig ist und nur simples DI genötigt wird.
container.RegisterTypes(
    AllClasses.FromAssemblies(typeof(UnityConfig).Assembly),
    WithMappings.FromMatchingInterface,
    WithName.Default, WithLifetime.Transient);
container.AddNewExtension<Log4NetExtension>();
/* resolve Varianten*/                
IBaseUrlSettings baseUrlSettings = container.Resolve<IBaseUrlSettings>();
public SomeClass(IBaseUrlSettings baseUrlSettings){...}
[Dependency]
public ILog Logger { set; protected get; }
                    Etwas schwergewichtigerer Container von MS der in diversen WebApi und WPF Anwendungen eingesetzt, wenn keine weitere DB Anbindung benötigt wird.
[AppSettingsDependency("ReadingAnalysis.DecimalPlaces")]
public int DecimalPlaces { get; set; }
                        Wiki Stichwort: DI-/IOC Container