我读了一篇关于using Autofac to completely decouple an application的非常酷的博客。但尽可能地尝试(而且对于这些都是非常新的),我无法让Autofac凝胶化。配置Unity时对独立项目的引用?
我从MS模式转向Unity &实践企业图书馆,这一切都变得更好。为了让事情不必要的困难我自己,我分离出来,我所有的东西转化项目为:
- UnityDi(控制台应用程序)
- UnityDi.Contracts(接口)
- UntiyDi.Domain(类)
- UnityDi.Repositories(数据访问)
- UnityDi.Services(访问通过服务层到资源库)
我使用XML配置小马了统一:
<?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>
而且得到了到正在运行的应用程序,无后顾之忧:
private static readonly IUnityContainer Container = new UnityContainer();
...
Container.LoadConfiguration();
但为了做到这一点,我需要从我的控制台应用程序,上述所有项目的参考。
有没有办法让应用程序只有一个参考UnityDi。 合同(接口)?然后,该应用程序就可以很好地解耦(当然还有大锤)。
我希望这是足够的解释,我完全是新的这一点,我正在这样极端,以促进更好的学习。
使用XML配置时,您*不需要引用所有项目?是什么让你觉得你呢? –
即使你有一个引用所有其他项目的项目:问题是什么?这就是bootstrappers的意思。选中这个[链接](http://blog.ploeh.dk/2011/07/28/CompositionRoot.aspx) –
我在VS2010中创建了一个图层,并且向我展示了确实我的各层依赖于合同。 Irks我说,我的主要项目必须参考Unity的其他项目,以便在进行配置时查找它们,但我想Unity会以某种方式需要一个钩子。 – Richard