У меня раздражающая проблема зависимости между компонентами, и я хотел бы услышать несколько способов ее решения.
В основном у меня есть 3 компонента, которые почти ациклически зависят друг от друга, за исключением небольшой зависимости между первым и последним компонентом. Конкретно, это JIT-компилятор, но, надеюсь, это широко распространенный тип абстрактной зависимости, который может возникнуть в других обстоятельствах.

Компоненты в основном находятся в последовательности зависимости от потока; генерация источника / AST, генерация кода и время выполнения. Как видно из диаграммы, ошибки, генерируемые во время выполнения, должны иметь возможность сообщать идентификаторы, которые могут быть соотнесены с элементами местоположения источника. Сложность в том, что этот идентификатор не обязательно является целочисленным типом (хотя это может быть). До сих пор SourceItemID
был типом, внутренним для компонента Source, но теперь кажется, что его нужно определить вне его.
Каковы были бы оптимальные модели для использования здесь? Я думал, может быть, шаблонизируя тип ошибки времени выполнения с желаемым идентификатором местоположения источника.