Я прочитал действительно классный блог о , используя Autofac для полного отделения приложения .Но, как ни старайся (и будучи совершенно новым для всего этого), я просто не мог заставить Autofac превращаться в гель.
Я обратился к Unity из корпоративной библиотеки MS Patterns & Practices Enterprise, и это стало намного лучше,Чтобы сделать вещи излишне трудными для себя, я разделил все свои вещи на проекты как:
- UnityDi (Консольное приложение)
- UnityDi.Contracts (Интерфейсы)
- UntiyDi.Domain (Классы)
- UnityDi.Repositories (Доступ к данным)
- UnityDi.Services (Доступ к хранилищу через уровень служб)
Я использовал конфигурацию 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>
И получил это в работающее приложение, не беспокойтесь:
private static readonly IUnityContainer Container = new UnityContainer();
...
Container.LoadConfiguration();
НО, чтобы сделать это, мне нужна ссылка на все вышеупомянутые проектыиз моего консольного приложения.
Есть ли способ заставить приложение использовать только ссылку на UnityDi. Контракты (интерфейсы)?Тогда приложение хорошо и по-настоящему отделено (правда, кувалдой).
Надеюсь, этого достаточно для объяснения, я совершенно новичок в этом, и я настолько экстремален, чтобы способствовать лучшему обучению.