У меня возникли проблемы с разработкой классов, чтобы лучше использовать принципы DI/IoC, особенно если класс имеет зависимость от одной из своих зависимостей (то есть X имеет зависимости Y и Z и Y имеют зависимость Z).Работа с отношениями и потенциальными несоответствиями с DI/IoC
пример, вероятно, будет полезно:
Допустим, у меня есть класс, который будет инкапсулировать некоторую информацию о соединении для моего приложения. Назовите это «ConnectionInfo»
class ConnectionInfo
{
// ...
}
Я разработал класс работника, который использует информацию о соединении, так что я буду инъекционным моими зависимости через конструктор.
class Worker
{
public Worker(ConnectionInfo c)
{
// ...
}
}
Теперь, скажем, я хочу построить еще один класс. Ему нужен доступ к информации о подключении, но я также хочу иметь доступ к функциям, предоставляемым классом Worker.
class AnotherClass
{
public AnotherClass(ConnectionInfo c, Worker w)
{
// ...
}
}
Это все хорошо и хорошо. Тем не менее, подразумевается логическая связь между объектом ConnectionInfo, введенным в Рабочий, и объектом ConnectionInfo, введенным в AnotherClass. Дизайн имеет смысл только тогда, когда он один и тот же. Однако это не применяется. Нет ничего, что останавливало бы один ConnectionInfo, который был бы добавлен в AnotherClass, и полностью несвязанный ConnectionInfo, который был бы введен в Рабочий.
Я имею дело с IoC/DI в неправильном направлении?
Должны ли классы разрабатываться по-разному или должны быть обработаны иным способом (например, принудительное выполнение с помощью проверки параметров или, может быть, просто оставить его в контейнере IoC)?