.NET использовать транзитивные зависимости / ссылки - PullRequest
9 голосов
/ 08 сентября 2011

У меня есть решение Visual Studio с 3 проектами:

  • MyWebSite (A)
  • BusinessModel (B)
  • Стойкость (С)

Persistence, проект C, зависит от NHibernate и содержит все интерфейсы репозитория, Hibernate реализации этих репозиториев и классы, которые отображаются на таблицы БД.

BusinessModel, проект B, зависит от C и содержит все классы обслуживания и классы, представляющие сущности бизнес-домена. Эти службы используют репозитории для извлечения данных, а затем преобразуют эти данные в бизнес-представления поверхности на своих собственных интерфейсах.

MyWebSite, проект A, зависит от A и содержит все классы / файлы MVC. Контроллеры MVC здесь используют класс обслуживания от B для выполнения любых функций бизнес-логики. На этом уровне не известно, что проект B использует репозитории проекта C для выполнения своих операций.

В идеальном мире я бы предположил, что проект A должен ссылаться на B, который ссылается на C, который ссылается на NHibernate. Это не похоже на правду. Я считаю, что для проекта A нужна ссылка на B и C и NHibernate! Мне не нравится идея моего веб-приложения, требующего знания моей серверной архитектуры, и я особенно не хочу, чтобы он осознавал тот факт, что я использую NHibernate в качестве своего ORM.

Есть ли способ заставить эти проекты использовать транзитивные зависимости при разрешении их ссылок?

Мой проект - .NET 4 в Visual Studio 2010, если эта информация имеет какое-либо значение.

EDIT: Я нашел этот ответ SO на связанный вопрос, который объясняет, что эти ссылки необходимы, только если классы проекта C обнаружены в проекте B. Я был полон решимости не иметь утечек между слоями, и я знаю, что Hibernate классы используются только в C, так что, возможно, я просто не правильно понимаю ...

...