Как установить приоритет реализации интерфейса в Orchard?

Я хотел бы создать собственный INavigationProvider в своем модуле для Orchard CMS:

[UsedImplicitly]
LocalizedMainMenuNavigationProvider : INavigationProvider

Но похоже, что моя реализация не используется контейнером IoC (я думаю, AutoFac), вероятно, потому, что уже установлен другой модуль, предоставляющий используемую реализацию.

Как заставить Orchard использовать мою реализацию?

Спасибо


person Vojtěch Vít    schedule 14.03.2011    source источник


Ответы (1)


Меню создается с помощью INavigationManager, который принимает в качестве параметра IEnumerable‹ INavigationProvider >. Это означает, что он берет всех провайдеров для данного имени меню и объединяет их выходные данные. И эти данные используются для рендеринга финального меню.

Также убедитесь, что ваш класс является общедоступным, иначе ваша реализация не будет зарегистрирована.

На вашем месте я бы предпочел создать собственную реализацию INavigationManager на основе стандартной (чтобы не копировать/вставлять весь код). Это единственное место, где вы получаете все пункты меню, собранные от провайдеров, и можете их локализовать.

ХТН

person Piotr Szmyd    schedule 14.03.2011