2012-05-31 15 views
5
  • ¿Cómo puedo acceder a la instancia Container fuera del controlador?
  • Tengo que usar Container.Resolve en mi clase, pero ¿cómo puedo acceder a la instancia Container?
  • ¿Es singleton?
  • ¿Puedo usar new Container() o hay alguna cadena como Funq.StaticContainer?

Gracias a Mythz for gist hint, a) o b) o c).Uso de Funq en ServiceStack

Usaré la solución de Mythz, la acepto pero me preocupa su patrón (ServiceLocator Patrón), puede check here for extra info.

+0

http://stackoverflow.com/questions/3139209/does-funq-ioc-container-support-property-injection El enfoque está bien para mí. – ozz

Respuesta

7

Hay varias maneras de hacer referencia estáticamente a su instancia de AppHost. Puede resolver una dependencia a través de la IAppHost ejemplo, mediante:

HostContext.TryResolve<T>(); 
HostContext.Resolve<T>(); 
HostContext.AppHost.TryResolve<T>(); 

Si por alguna razón, tiene que acceder el hormigón Funq.Container, se puede acceder a él a través de la Singleton:

ServiceStackHost.Instance.Container 

Mientras que dentro de un servicio, Ver página de afeitar, etc se puede utilizar:

base.TryResolve<T>(); 
+0

No hay un método Resolver en IAppHost He utilizado TryResolve (viene de IResolver) – ozz

+0

Gracias, respuesta actualizada. TryResolve devuelve nulo para las dependencias faltantes donde Resolve arrojaría una ResolutionException – mythz

Cuestiones relacionadas