繁体   English   中英

如何在分层体系结构中使用温莎城堡安装依赖项

[英]how to install dependencies with castle windsor in a layered architecture

我在MVC项目中将Castle Windsor用于ioc。

我的架构基本上是Web-> Services-> Data

控制器将服务作为依赖项。 服务具有存储库作为数据层中的依赖项。

我的Web层没有对数据层的引用。 我的问题是我试图注册我的存储库,这是我的服务的依赖项。 如果我在服务层中有一个单独的容器来注册存储库,我应该如何引导它?

否则我可能会以错误的方式进行操作。

如果将数据层功能类(AKA存储库)的接口放置在域层中,则Web层不必引用数据层。 然后,您可以轻松地依赖在Web层中初始化的单个容器。

该问题包含更多细节。

有关实现此功能的一些高级方法,请参考mvc扩展

这个怎么样。 缺点是您需要对存储库dll的名称进行硬编码,但是您始终可以将其移动到web.config等,这样会更加简洁。

IWindsorContainer container = new WindsorContainer();

// Register repositories
_container.Register(
        AllTypes.Pick()
                .FromAssemblyNamed("MyDataLayerAssembly")
                .WithService
                .DefaultInterface());

// Register services
_container.Register(
        AllTypes.Pick()
                .FromAssemblyNamed(typeof(ISomeService).Assembly.GetName().Name)
                .WithService
                .DefaultInterface());

ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(container));

但是,您可能只需要精确调整Register()方法中传递的内容以适合您的需求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM