Can I register my types in modules in Unity like I can in Autofac?

前端 未结 2 1179
星月不相逢
星月不相逢 2020-12-09 20:14

I am fairly familiar with Autofac and one feature that I really love about Autofac is the registering of modules. Does anyone know how I can do this with Unity? I\'m havin

2条回答
  •  醉梦人生
    2020-12-09 20:57

    Actually, you can do trivially with Unity container extensions.

    public class Global : HttpApplication, IContainerProviderAccessor
    {
       private static IContainerProvider _containerProvider;
    
       protected void Application_Start(object sender, EventArgs e)
       {
          var container = new UnityContainer();
          container.AddNewExtension();
    
          _containerProvider = new ContainerProvider(container);
       }
    
    [...]
    
       public IContainerProvider ContainerProvider
       {
          get { return _containerProvider; }
       }
    }
    
    public class MyWebModule : UnityContainerExtension
    {
        protected override void Initialize()
        {
            Container.AddNewExtension();
            Container.AddNewExtension();
        }
    }
    
    public class ApplicationModule: UnityContainerExtension
    {
        protected override void Initialize()
        {
            Container.RegisterType(
                new ContainerControlledLifetimeManager(),
                new InjectionFactory(c => new ProductPresenter(c.Resolve())));
        }
    }
    

提交回复
热议问题