Я создал библиотеку классов (сборку), которая обеспечивает обмен сообщениями, электронную почту и смс. Эта библиотека классов определяет интерфейс IMessenger, который оба класса EmailMessage и SmsMessage реализуют.
Я вижу, что это общая библиотека, которая будет частью моего уровня инфраструктуры и будет / может использоваться в любой разработке.
Теперь на моем прикладном уровне у меня есть класс, который требует использования компонента обмена сообщениями, и я, очевидно, хочу использовать созданную мной библиотеку сообщений. Кроме того, я буду использовать контейнер IoC (Spring.net), чтобы позволить мне внедрить мою реализацию, т.е. либо электронную почту, либо смс.
Поэтому, я хочу программировать на интерфейсе в своем классе прикладного уровня, нужно ли мне тогда ссылаться на мою библиотеку классов сообщений из моего класса прикладного уровня?
Это тесно связывает мой класс прикладного уровня с моей библиотекой классов сообщений?
Должен ли я определять интерфейс - IMessenger в отдельной библиотеке?
Или я должен заниматься чем-то другим?