如何在Orchard中设置接口实现的优先级?

问题描述 投票:2回答:1

我想在我的Orchard CMS模块中创建一个自定义的INavigationProvider:

[UsedImplicitly]
LocalizedMainMenuNavigationProvider : INavigationProvider

但似乎IoC容器(我认为是AutoFac)没有使用我的实现,可能是因为已经安装了另一个模块,它提供了一个使用的实现。

如何强制Orchard使用我的实现?

谢谢

.net asp.net-mvc asp.net-mvc-3 autofac orchardcms
1个回答
2
投票

菜单由INavigationManager构建,它将IEnumerable <INavigationProvider>作为参数。这意味着它需要所有提供者获取给定的菜单名称并合并其输出。此数据用于渲染最终菜单。

还要确保您的课程是公开的 - 否则您的实施将不会被注册。

如果我是你,我宁愿创建一个基于默认的INavigationManager的自定义实现(所以不要复制/粘贴所有代码)。这是您从提供商处收集所有菜单项并且能够本地化它们的唯一地方。

HTH

© www.soinside.com 2019 - 2024. All rights reserved.