2012-05-31 41 views
5
  • 如何访问控制器外的Container实例?
  • 我必须在我的班级中使用Container.Resolve,但是如何访问Container实例?
  • 单身吗?
  • 我可以使用new Container()或者是否有像Funq.StaticContainer这样的链条?

感谢Mythz for gist hint,a)或b)或c)。ServiceStack中的Funq用法

我会使用Mythz的解决方案,它被我接受但有关于它的模式(ServiceLocator模式),你可以check here for extra info

+0

http://stackoverflow.com/questions/3139209/does-funq-ioc-container-support-property-injection 方法对我来说没问题。 – ozz

回答

7

有几种方法可以静态引用您的AppHost实例。您可以通过IAppHost实例解析的依赖有:

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

如果由于某种原因,你需要访问的具体Funq.Container,您可以通过单访问:

ServiceStackHost.Instance.Container 

虽然里面有服务, Razor视图页面,等你可以使用:

base.TryResolve<T>(); 
+0

There is no Resolve IAppHost方法我用TryResolve (来自IResolver) – ozz

+0

感谢更新的答案。 TryResolve在Resolve会抛出ResolutionException的情况下为缺失的依赖性返回null – mythz