Я пытаюсь найти контейнер IOC, который позволит мне иметь данные сопоставления для поля, хранящегося в базе данных, и разрешать интерфейс или объект, которые необходимо разрешить с помощью строкового значения, извлеченного из базы данных.Решение Runtime IOC Container
Большинство примеров, которые я видел, используют интерфейсы, жестко закодированные в коде, я хочу, чтобы интерфейс, который должен быть разрешен, был динамическим.
Это то, что я обычно вижу:
var taskController = container.Resolve<ITaskController>();
Это то, что я хотел бы видеть:
var strTaskController = "ITaskController";
var taskController = container.Resolve(strTaskController);
Я уверен, что я мог бы ознакомиться с документацией для всех контейнеров МОК, но Я надеюсь, что это простой вопрос для кого-то, у кого больше опыта работы с МОК.
Возможно, я не знаю полного имени типа. Используя отражение, я все еще могу получить объект Type для интерфейса из сборки, но я надеялся, что это может сделать контейнер, поскольку он уже имеет метаданные о том, какие типы загружены для разрешения. – Firestrand
Достаточно честный. Единственный другой вариант (с помощью Unity) - это прокрутить коллекцию регистрации UnityContainer, которая предоставляет вам коллекцию объектов ContainerRegistration, на которой есть свойство RegisteredType. Вы можете сопоставить имя типа этого типа с тем, что у вас уже есть, и если они совпадают, вы можете использовать этот тип для решения, используя описанный метод. Я отредактирую свой пост с образцом ... – BFree