Итак, позвольте мне сначала объяснить, как устроено мое приложение, у меня есть много проектов, которые все делают по-своему, если проекту нужен файл из другого проекта, то он ссылается на этот проект, но главное, что вы не можетессылочные проекты в обоих направлениях.
Project.Interfaces (Hold interfaces, referenced in most projects)
Project.Something
Project.SomethingElse
Project.Shared (Usually just utilities and helpers)
Теперь я достиг стадии в моем приложении, где мне нужно использовать enum. Я подумал, что классно позволяет разместить перечисление в Project.SomethingElse
там, где оно больше всего связано - мне нужно мое перечисление в .Interfaces
, чтобы я мог ссылаться на него для интерфейса, который использует конкретный тип .SomethingElse
. Я не могу сослаться на этих двоих вместе. Так что я должен делать?
Я попытался разместить его в Project.Shared
, что имело смысл, когда я пытался, но .Shared
нужно .Interfaces
- причина в том, что яне ссылаясь на конкретные типы в .Shared
.
Я знаю, что здесь возникает большой вопрос, почему я нигде не ссылаюсь на конкретные типы, и это потому, что я хочу сделать свое приложение как можно более абстрактным.
Мое решение состояло в том, чтобы сделать еще один проект под названием Project.Enums
и просто сохранить там все перечисления, и это сработало, потому что перечислениям не нужно ничего, кроме самих себя.
Но я также былрекомендуется, чтобы проект .Interfaces
владел перечислением, но разве это не нарушает какое-то правило SRP? Я просто ищу руководство о том, как правильно справиться с этим, не нарушая никаких правил. Я обдумываю это?