2011-03-22 27 views
7

Estoy implementando Ioc y hay algunas cosas que quiero asegurarme de que sean correctas.IoC - Unity, cómo funciona RegisterInstance, ¿Estoy en lo cierto?

  1. Si uso RegisterInstance, al resolverlo siempre devolverá el objeto singleton?
  2. BootStrapper se cargará en Global.asax o en algún lugar donde se cargará inicialmente, lo que significa que todas las instancias serán singleton?

pero quiero saber cómo
1. Crear una instancia independiente por resolución, PerResolve no trabajará con registerInstance, sólo funciona con RegisterType.
2. Si hago el objeto dependiente como propiedad estática, funcionará de la misma manera, si puedo crear una instancia separada por resolución.

ayuda?

public class ClientUser : UserServiceBase, IClientUser 
{ 
    private IDataServiceManager _dataServiceManager; 
    public ClientUser() 
    { 

    } 

    private IDataServiceManager DataServiceMgr 
    { 
     get 
     { 
      if (_dataServiceManager == null) 
       _dataServiceManager = ProjectContainer.Instance.Resolve<IDataServiceManager>(); 

      return _dataServiceManager; 
     } 
    }  

Respuesta

12

No puede usar RegisterInstance si desea la instanciación de PerResolve. Utilice RegisterInstance, que devolverá siempre la misma instancia del objeto (que es el punto de registrar la instancia) o use RegisterType y defina PerResolveLifetimeManager.

RegisterInstance por defecto usa ContainerControlledLifetimeManager. El único otro administrador de por vida significativo para RegisterInstance es ExternallyControlledLifetimeManager.

TransientLifetimeManager y PerResolveLifetimeManager no tienen sentido porque estas vidas deben crear una nueva instancia cada vez que llame al Resolve.

PerThreadLifetimeManager es inútil en los escenarios donde no se controla el enhebrado.

+0

Gracias, solo quiero saber una cosa más, ¿cuál es el mejor lugar para llamar a bootstrapper para la registración? – Waqas

+0

Puede colocar bootstrapper, por ejemplo, en Application_Start en global.asax. –

Cuestiones relacionadas