我有一个具有典型架构的 MVC 应用程序......
ASP.NET MVC 控制器 -> 人员服务 -> 人员存储库 -> 实体框架数据库上下文
我正在使用 Castle Windsor,我可以看到将它与 ControllerFactory 一起使用来创建具有正确依赖关系的控制器的好处。使用这种方法,Controller 获得了一个 Service 注入,它反过来知道如何构造正确的 Repository,而 Repository 又知道要使用的正确 DbContext。
温莎配置是这样的......
dicontainer = new WindsorContainer();
dicontainer.Register(Component.For<IPersonService>().ImplementedBy<PersonService>());
dicontainer.Register(
Component.For<IPersonRepository>().UsingFactoryMethod(
() => new PersonRepository(new HrContext("connectionString"))));
这是正确的方法吗?我不喜欢UsingFactoryMethod,但想不出其他方法。
此外,如果存储库需要服务层不需要的依赖项(例如 ILogger)怎么办?这是否意味着我必须将 ILogger 传递到服务层而不使用它。这似乎是一个糟糕的设计。我会很感激这里的一些指示。我已经阅读了大量文章,但没有找到一个具体的例子来验证我是否做对了。谢谢。