Я создал заводскую сборку, которая может обрабатывать транзакции любого типа (которые поддерживают ITransactionType
). Я могу добавить больше типов транзакций в отдельные сборки, все из которых будут работать с фабрикой, без необходимости перекомпиляции (что является одним из преимуществ фабрики).
Существует фактический список типов транзакций, которые можно обрабатывать, поэтому я определил статический класс с константными строками, который хранится в отдельной сборке. На это ссылаются другие сборки для обеспечения согласованных имен типов транзакций. Эта сборка не , на которую ссылается фабрика, поскольку она не должна знать, и это приведет к ненужным компиляциям этого проекта.
Все это работает просто отлично. Я никогда не буду ссылаться на сборку главного списка в заводском проекте, потому что он знает, что это не имеет смысла.
Однако я обеспокоен тем, что если проект поддерживается кем-то, кто не понимает всего этого, он может по ошибке добавить ссылку на сборку основного списка. Есть ли способ предотвратить добавление этой ссылки? Итак, если кто-то (возможно, даже я в будущем) добавит ссылку, есть ли способ заставить меня скомпилировать ошибку, указывающую на объяснение того, почему поведение неприемлемо?