2011-08-16 24 views
0

在Autofac,可有人解釋,當我註冊一個組件通過以下方式會發生什麼:InstancePerLifetimeScope和InstancePerMatchingLifetimeScope

builder.RegisterType<SomeComponent>() 
     .InstancePerMatchingLifetimeScope(contextTag) 
     .InstancePerLifetimeScope(); 

Q1。這是註冊組件的有效方法嗎? Q2302。 InstancePerLifetimeScope是否會覆蓋另一個?如果我試圖解析'contextTag'範圍中的組件,我會得到一個異常嗎?

+0

你想達到什麼目的?通常你使用其中之一。在autofac wiki中閱讀關於它們的文檔。 – jgauffin

+0

我們有我們自己的容器結構和不同的上下文標籤來管理我們的依賴關係。當我們連接Autofac WCF時,默認情況下它會在Lifetime範圍中查找。因爲所有的依賴都在'contextTag'範圍內,所以它無法解決它們。 如果我在兩個範圍內註冊組件(如上所述),它可以在任何情況下解決它們。 – Zuber

回答

0

A1。這不是無效的。但看到並理解這種需求令人困惑。

A2。該組件將在兩個範圍內都可用,並將在請求的範圍內解決。

我會盡量避免這種情況。但是如果你無法完全避免它,那麼使用完全不同的autofac模塊將組件註冊到不同的作用域將會更清晰。

相關問題