Search code examples
c#unity-container

Unity Container 2 from 5 deprecated AddNewExtension


At Unity2 i would have this factory registers

     iocContainer.AddNewExtension<StaticFactoryExtension>()
        .Configure<IStaticFactoryConfiguration>()
        .RegisterFactory<string>("ApplicationPath", ioc => HttpContext.Current.Request.ApplicationPath);

     iocContainer.AddNewExtension<StaticFactoryExtension>()
        .Configure<IStaticFactoryConfiguration>()
        .RegisterFactory<string>("ApplicationUrl", ioc => ApplicationUrl());

     iocContainer.AddNewExtension<StaticFactoryExtension>()
        .Configure<IStaticFactoryConfiguration>()
        .RegisterFactory<string>("BaseUrl", ioc => BaseUrl());

     iocContainer.AddNewExtension<StaticFactoryExtension>()
        .Configure<IStaticFactoryConfiguration>()
        .RegisterFactory<RequestContext>(ioc => HttpContext.Current.Request.RequestContext);

     iocContainer.AddNewExtension<StaticFactoryExtension>()
        .Configure<IStaticFactoryConfiguration>()
        .RegisterFactory<ApplicationContext>(ioc => ApplicationContext.GetForRequest());

Now this was deprecated, and only Register would take in place, but how could i register those factories ?


Solution

  • Just for letting people know, the StaticFactory was replaced by the InjectionFactory, so

    iocContainer.AddNewExtension<StaticFactoryExtension>()
            .Configure<IStaticFactoryConfiguration>()
            .RegisterFactory<string>("ApplicationPath", ioc => HttpContext.Current.Request.ApplicationPath);
    

    would become

    iocContainer
            .RegisterType<string>("ApplicationPath", new InjectionFactory(ioc => HttpContext.Current.Request.ApplicationPath));