2012-05-31 73 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