Здравствуйте, ylem, Вы писали:
S>>Внезапно, это один из немногих примеров, на котором можно объяснить IoC.
Y>Если LongScope со статическим методом Open() конфигурится* так же статически, это считается за иньекцию или хотя бы приемлемый способ конфигурации IoC? Y>Если нет, можно в двух словах, почему?
Код выше — иллюстрация передачи интерфейса обратного вызова (callback), чтобы можно было изменить поведение сервиса (показать часики когда надо),
не меняя сам сервис, и не втаскивая зависимость от UI-библиотек в сервис. Можно сказать да, иллюстрация принципа IoC.
Y>* кофигурится — например, подсовывается колбэк, возврщающий, что должен вернуть этот Open.
Конфигурация IoC тут как-то ни при чем.
Что обычно называется "инъекцией" — это чтобы этот интерфейс "обратного вызова" не в параметрах метода передавался, а в параметрах конструктора например.
Даже больше — чтобы не ты его явно в сервис передавал, создавая этот самый сервис, а поручил эту заботу какой-нибудь библиотеке.
В твоем случае вся эта возня выглядит совершенно избыточной.
Достаточно просто не тащить UI-библиотеки в сервис, "отвязав" их с помощью этого самого интерфейса обратного вызова.