Сервисный локатор -стоит того?

У нас есть большое решение (> 100 проектов ), и почти каждый тип использует либо локатор сервисов (, пример 1 ), либо наш собственный словарь типов (, пример 2 )для инстанцирования.

Например, у нас есть:

IQuote quote = Registry.Resolve<IQuote>(); 

или

IQuote quote = Registry.Find<IQuote>(args);

Второй пример отправляется в файл конфигурации, чтобы найти конкретный объект для создания экземпляра с использованием отражения.

Это усложняет жизнь при следовании коду -, потому что неясно, какой конкретный тип используется -, поэтому нам приходится много раз проверять сопоставления, когда мы пытаемся изучить часть кода. Используя приведенное выше в качестве примера, нажмите F12 на:quote.DoSomething()приведет вас к определению интерфейса.

Это также немного сложнее реализовать -нам нужен интерфейс + конкретный класс + отображения конфигурации, когда альтернативой является только 1 класс.

Если подумать, -я не знаю, чтобы что-либо когда-либо было "заменено" на другой тип -, поэтому, хотя мы реализовали IoC, мы не использовали его, или по крайней мере -очень мало.

Так -оно того стоит? Мы реализовали это неправильно/слишком много? Я что-то неправильно понимаю?

6
задан PeteGO 5 August 2013 в 20:19
поделиться