長期讀者第一次作家在這裏。我目前正在從一個簡單的C#.NET應用程序轉換到使用Ninject到Castle Windsor的最新版本。溫莎城堡:多構造問題
在大多數情況下,轉換進展順利和容器的實施,完美執行。然而,我的存儲庫對象有一個小問題。
我有一個是用以下方式編碼的用戶信息庫對象:
public class UserRepository : IUserRepository {
public UserRepository(IObjectContext objectContext) {
// Check that the supplied arguments are valid.
Validate.Arguments.IsNotNull(objectContext, "objectContext");
// Initialize the local fields.
ObjectContext = objectContext;
}
public UserRepository(IObjectContextFactory factory)
: this(factory.CreateObjectContext()) {
}
// -----------------------------------------------
// Insert methods and properties...
// -----------------------------------------------
}
要符合這個代碼,我已經安裝在我的應用程序的配置文件中的下列項目:
<castle>
<components>
<component id="objectContextFactory" lifestyle="custom"
customLifestyleType="Common.Infrastructure.PerWebRequestLifestyleManager, Common.Castle"
service="Project.DAL.Context.IObjectContextFactory, Project.DAL.LINQ"
type="project.DAL.Context.ObjectContextFactory, Project.DAL.LINQ">
</component>
<component id="userRepository" lifestyle="custom"
customLifestyleType="Common.Infrastructure.PerWebRequestLifestyleManager, Common.Castle"
service="Project.BL.Repository.IUserRepository, Project.BL"
type="Project.BL.Repository.UserRepository, Project.BL.LINQ">
<parameters>
<factory>${objectContextFactory}</factory>
</parameters>
</component>
</components>
</castle>
對我來說,一切看起來都應該如此。當我嘗試解析IObjectContextFactory服務的實例時,我檢索了一個ObjectContextFactory對象。我嘗試解決IUserRepository服務的實例時遇到了問題。我受到以下令人愉快的例外處理:
無法創建組件'userRepository',因爲它具有要滿足的依賴關係。 userRepository正在等待以下依賴性:
服務:
- SandCastle.DAL.Context.IObjectContext which was not registered.
我用盡了一切我可以在此想。所以,對你的讀者來說,我說:有什麼想法?
曾爲勢如破竹!謝謝! – highvoltage 2009-11-17 12:39:27
「溫莎試圖匹配最貪婪的構造函數(一個參數可以滿足最多的參數)」。我認爲「從構造函數列表中只包含可解析的參數,具有最多參數的構造函數被選中」是更正確的。 – Steven 2012-06-03 01:04:27
@Steven現在怎麼樣? – 2012-06-05 14:09:40