我正在使用註冊表DSL示例來配置結構圖。但是這樣做可以使我的應用程序的所有層都可以使用我所有的註冊類型,我可以在其中添加參考結構圖。我不希望我的業務層瞭解我的數據訪問層,反之亦然。我如何獲得結構圖只爲每個圖層註冊特定類型?結構圖 - 如何在特定層中註冊某些類型
這裏是我的Global.asax文件中的代碼:
ObjectFactory.Initialize(x =>
{
x.AddRegistry<RegistryIOC>();
});
這裏是我的RegistryIOC類:
public class RegistryIOC : SMRegistry
{
public RegistryIOC()
{
For<IProfileService>.Use<ProfileService>();
For<IProctorService>().Use<ProctorService>();
//Business Logic Objects
For<IQual>().Use<Qual>();
For<ITest>().Use<Test>();
For<IBoldface>().Use<Boldface>();
For<ITrainingPlan>().Use<TrainingPlan>();
For<IUnit>().Use<Unit>();
//Data Transfer Objects
For<IGenericDTO>().Use<GenericDTO>();
For<IProfileDTO>().Use<ProfileDTO>();
For<IQualDTO>().Use<QualDTO>();
For<IPermissionDTO>().Use<PermissionDTO>();
//Repository Objects
For<IProctorRepository>().Use<ProctorRepository>();
For<IQualsRepository>().Use<QualsRepository>();
For<ITestRepository>().Use<TestRepository>();
For<IUnitRepository>().Use<UnitRepository>();
For<IUserRepository>().Use<UserRepository>();
}
}
感謝您的幫助。
你在說什麼樣的圖層?不同的流程?不同的機器?如果他們都在同一個進程中運行,那麼你可能會做你的業務層知道你的數據層,特別是它的接口。目前還不清楚你想要解決什麼問題。你的RegistryIOC類有什麼問題? –
我們有一個服務層,BLL和DAL,這些都是單獨的項目。每個項目都引用StructureMap。 服務層知道其他兩層,但BLL和DAL不知道對方。 我不希望其他開發人員利用DAL內的Business Objects,反之亦然我不希望開發人員利用BLL內的Repository對象。服務層對所有這些問題進行管理。 因此,使用這種方式註冊所有類型,所有對象都可以跨所有圖層(項目)使用。 –
好吧,*不要*從組合根目錄以外的任何其他層添加對StructureMap的引用... –