Dependency injection 配置Unity时对单独项目的引用?
我读了一篇很酷的博客。但尽管我可能会尝试(而且对这一切都是非常陌生的),我还是无法让Autofac凝胶 我从MS模式与实践企业库转向了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
- UnityDi(控制台应用程序)
- UnityDi.合同(接口)
- UntiyDi.Domain(类)
- 存储库(数据访问)
- 服务(通过服务层访问存储库)
<?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();