Не очень хорошо знаю Linq2Entity, поэтому вопрос:
Выражение «Count = res.Count()» вызовет запрос на скачивание всех данных или только «select count(*) ...»?
Всегда пожалуйста.
Но не очень понял комментарий.
Нам не нужно получить «любую из существующих реализаций», нам нужно получить «реализацию, нужную в данный момент, в зависимости от условий о которых IoC не знает»
И Resolve не возвращает null, если такой реализации нет — будет exception.
Если реализция может изменяться в runtime, то можно повторно вызывать RegisterType/RegisterInstance — это затрёт предыдушее значение в IoC контейнере. Так не пробовали?
Полностью согласен. Ваш вариант лучше, т.к. в моем варианте мы часть ответственности IoC берем на себя.
Плюс в Вашем варианте можно при изменении конфигурации, после перерегистрации вызвать BuildUp для существующих объектов, что должно заменить в них реализации зависимостей.
Но пост писался как пример создания Unity Extension.
Не очень хорошо знаю Linq2Entity, поэтому вопрос:
Выражение «Count = res.Count()» вызовет запрос на скачивание всех данных или только «select count(*) ...»?
Но не очень понял комментарий.
Нам не нужно получить «любую из существующих реализаций», нам нужно получить «реализацию, нужную в данный момент, в зависимости от условий о которых IoC не знает»
И Resolve не возвращает null, если такой реализации нет — будет exception.
Полностью согласен. Ваш вариант лучше, т.к. в моем варианте мы часть ответственности IoC берем на себя.
Плюс в Вашем варианте можно при изменении конфигурации, после перерегистрации вызвать BuildUp для существующих объектов, что должно заменить в них реализации зависимостей.
Но пост писался как пример создания Unity Extension.
А для чего тут marker interface использовать?
Можно пример кода?