2011-05-31 45 views
0

是否可以从共享位置或GAC与Unity引用程序集?从共享位置或带有Unity的GAC引用程序集

假设我有两个项目(同一解决方案下):

  • MyProject.Data(库接口)
  • MyProject.Data.EntityFramework(库实体框架试行)

我想要在一个ASP.NET MVC应用程序(MyProject.Web)中使用IoC,该应用程序也处于相同的解决方案下,但我不想为接口和实现添加项目引用。理想情况下,我想向接口添加项目引用,并从共享位置或GAC加载实现。这可以防止MyProject.Web中的任何代码创建特定实现的实例 - 这应该始终由IoC提供程序完成。

我可以决定创建一个nHibernate实现,IoC将使交换机更容易。如果有任何直接的耦合,这将是一场噩梦。这导致我回到这个问题。让我们删除开发人员在不询问IoC容器如何解析接口的情况下实例化具体实现的可能性。

回答

1

Unity只能实例化它可以容纳的类型,所以如果你想使用它的类型,你的MyProject.Data.EntityFramework程序集必须在你的MVC输出目录中。如果您不想直接引用项目,则可以使用构建操作来复制程序集,但沿着该路径行进意味着必须使用XML而不是API来配置Unity,这可能会有点痛苦并且会丢失你可以通过API获得类型检查的优势。

最终我会去使用API​​并直接引用该项目。这应该伴随着教育,以便其他开发人员知道系统架构应该如何使用,以及代码审查来帮助实施它。

+0

感谢您的回复。我不介意使用XML,但我明白你的观点。也许他们将在未来添加此功能。 – 2011-05-31 20:04:49

+0

不客气,祝你好运:) – 2011-05-31 20:45:20

+0

我要创建一个单独的IoC项目,它将引用接口和实现项目。这将包含一个使用流畅语法(win)创建的容器。 Web项目可以引用IoC项目和任何接口项目,从而将它从实现中解耦(win win)。 – 2011-06-01 13:13:17

相关问题