2012-07-15 54 views
0

我正在尝试起床并使用Autofac,但无法找出问题。假设我有一个带有几个项目的[winforms]解决方案:MyProject.GUI,MyProject.Model,MyProject.DataAccess。哪里是推荐的地方把所有builder.Register代码?假设我没有使用XML(这可能是一个错误,如果是的话请纠正我),它需要知道所有的程序集,以便引用每个程序集中的服务和组件。我应该把它全部放在启动项目MyPRoject.GUI中吗?这可行,但现在这个项目将“了解”所有其他项目。也许这并不像我初看起来那么糟糕。也许我在想这个。使用IoC容器时,您在哪里注册组件?

我会很感激任何想法。谢谢。

回答

1

您可以使用Module功能将模块放置在您的每个项目中,每个项目都可以在该项目中注册相关性。然后你可以在启动项目中注册这些模块。

启动项目将引用所有其他项目,但它不需要知道这些项目的内部。

+0

所以我会在我的启动中尝试类似以下内容? builder.RegisterModule(new MyProject.ModelModule);? 这很有道理。我想我紧紧抱住的想法是,我的创业项目不应该太了解其他项目,或者他们甚至存在。感谢您如此快速地回到我身边,度过一个愉快的周末。 – RobC 2012-07-15 03:31:52

+1

@RobC是的。否则你可能不得不动态加载程序集或使用像[MEF](http://mef.codeplex.com/) – Eranga 2012-07-15 03:40:22

+0

这样的框架颜色我受过教育。再次感谢。 – RobC 2012-07-15 03:59:59