Dependency injection 配置Unity时对单独项目的引用?

Dependency injection 配置Unity时对单独项目的引用?,dependency-injection,unity-container,enterprise-library,Dependency Injection,Unity Container,Enterprise Library,我读了一篇很酷的博客。但尽管我可能会尝试(而且对这一切都是非常陌生的),我还是无法让Autofac凝胶 我从MS模式与实践企业库转向了Unity,这比以前好多了。为了给自己制造不必要的困难,我将我所有的东西分为以下几个项目: UnityDi(控制台应用程序) UnityDi.合同(接口) UntiyDi.Domain(类) 存储库(数据访问) 服务(通过服务层访问存储库) 我使用XML配置构建Unity: <?xml version="1.0" encoding="utf-8" ?&g

我读了一篇很酷的博客。但尽管我可能会尝试(而且对这一切都是非常陌生的),我还是无法让Autofac凝胶

我从MS模式与实践企业库转向了Unity,这比以前好多了。为了给自己制造不必要的困难,我将我所有的东西分为以下几个项目:

  • UnityDi(控制台应用程序)
  • UnityDi.合同(接口)
  • UntiyDi.Domain(类)
  • 存储库(数据访问)
  • 服务(通过服务层访问存储库)
我使用XML配置构建Unity:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
    </configSections>
    <unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
        <assembly name="UnityDi.Contracts" />
        <assembly name="UnityDi.Domain" />
        <assembly name="UnityDi.Services" />
        <assembly name="UnityDi.Repositories" />
        <namespace name="UnityDi.Contracts" />
        <namespace name="UnityDi.Domain" />
        <namespace name="UnityDi.Services" />
        <namespace name="UnityDi.Repositories" />
        <container>
            <register type="IUser" mapTo="User"></register>
            <register type="IUserService" mapTo="UserService"></register>
            <register type="IUserRepository" mapTo="UserRepository"></register>
        </container>
    </unity>
</configuration>
但为了做到这一点,我需要从我的控制台应用程序中引用上述所有项目

有没有办法让应用程序只引用UnityDi。合同(接口)?然后这个应用程序就完全解耦了(当然是用一个大锤)


我希望这就足够解释了,我对这一点完全不熟悉,为了更好地学习,我采取了极端的做法。

我怀疑你需要项目参考的原因是,如果没有它们,当你点击F5时,VS不会将程序集复制到你的apps bin文件夹中。怎么会呢,它没有办法知道你需要它们


项目参考是问题的最快解决方案。您可以做的另一件事是添加一个构建后步骤,以复制适当的DLL,并将其放在正确的目录中,这样您就可以运行应用程序。

使用XML配置时,您不需要引用所有项目吗?是什么让你认为你会这样做?即使你有一个项目引用了所有其他项目:问题是什么?这就是引导器的用途。检查这一点,我在VS2010中制作了一个图层图,这表明我的各个图层确实只依赖于合同。让我恼火的是,我的主项目必须引用Unity的所有其他项目,以便在引入配置时找到它们,但我认为Unity需要某种方式的挂钩。
private static readonly IUnityContainer Container = new UnityContainer();
...
Container.LoadConfiguration();