我正在使用StructureMap構建一個asp.net MVC2 web應用程序。我創建了一個自定義的MembershipProvider。我得到它在啓動時正確初始化通過調用:在MembershipProvider.Initialize()中注入存儲庫?餿主意?
x.For<MembershipProvider>().Use(Membership.Provider);
x.For<IMembershipProvider>().Use<CPOPMembershipProvider>();
在初始化(),我想實例化一個倉庫用於訪問用戶數據庫中的數據的。
於是,我把在私人財產在我定製的MembershipProvider:
private IUserRepository userRepository;
而且,裏面初始化(),我稱之爲:
IUserRepository userRepository = ObjectFactory.GetInstance<IUserRepository>();
首先,是 「好的做法」,以在我的自定義MembershipProvider中實例化一個存儲庫?
其次,當我實現它時,好像我無法訪問在global.asax中正確設置的任何StructureMap配置。當我在上面的GetInstance()行之前調用Debug.WriteLine(ObjectFactory.WhatDoIHave())時,沒有任何配置數據存在(我確實從位於global.asax中的同一調試行中看到),並且我得到一個「調用GetInstance()時,沒有爲PluginFamily CPOP.Domain.Contracts.Repositories.IUserRepository定義的默認實例「錯誤。這是爲什麼?好像我在MembershipProvider中有一個完全不同的容器。
正是我需要的。 – 2012-02-07 01:33:36