【问题标题】:How to set priority of interface implementation in Orchard?Orchard中如何设置接口实现的优先级?
【发布时间】:2011-03-14 14:26:48
【问题描述】:
我想在我的模块中为 Orchard CMS 创建一个自定义 INavigationProvider:
[UsedImplicitly]
LocalizedMainMenuNavigationProvider : INavigationProvider
但 IoC 容器(我认为是 AutoFac)似乎没有使用我的实现,可能是因为已经安装了另一个模块来提供使用的实现。
如何强制 Orchard 使用我的实现?
谢谢
【问题讨论】:
标签:
.net
asp.net-mvc
asp.net-mvc-3
autofac
orchardcms
【解决方案1】:
Menu 由 INavigationManager 构建,它以 IEnumerable 作为参数。这意味着它获取给定菜单名称的所有提供程序并合并它们的输出。并且这些数据用于渲染最终菜单。
还要确保你的类是public - 否则你的实现将不会被注册。
如果我是你,我宁愿创建一个基于默认实现的 INavigationManager 的自定义实现(所以不要复制/粘贴所有代码)。这是您从提供商处收集所有菜单项并能够对其进行本地化的唯一地方。
HTH