Как разрешить все реализации одного интерфейса в единстве?

1

Хорошо, я хочу создать произвольные реализации определенного интерфейса и решить их. Это фактически похоже на плагиновую систему. "Создайте свою собственную реализацию интерфейса X, и приложение сделает все остальное"

public interface IMenuEntry { ... }

// auto-mapping (registration-by-convention)
_container.RegisterTypes(AllClasses.FromAssemblies(assemblies), 
                         WithMappings.FromMatchingInterface, 
                         // ResolveAll need names for multiple registrations of the same type (?)
                         WithName.TypeName,                 
                         WithLifetime.ContainerControlled);

var g = _container.ResolveAll<IMenuEntry>(); // empty - why?


Когда я проверяю регистрацию своих контейнеров, я выполняю свои функции, а имя - это имя класса, а не интерфейс. Замечательно. Но почему я не могу разрешить все реализации IMenuEntry? Он всегда пуст.

Теги:
unity-container

1 ответ

3
Лучший ответ

Я смотрю этот пост, и это похоже на WithMappings.FromMatchingInterface будет соответствовать типу MenuEntry для IMenuEntry.

WithMappings.FromAllInterfaces этого вы можете попробовать WithMappings.FromAllInterfaces.

  • 0
    Оооо ... Ну, это недостатки, когда вы просматриваете документацию .. Решил мою проблему. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню