我正在使用注册表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的引用... –