我想拿出类似什么的Visual Studio 2010提供了菜单和上下文菜单的架构,这样我可以延长我的当前菜单通过扩展提供额外的子项.NET应用程序扩展菜单和上下文菜单。我正在使用MEF(Managed Extensibility Framework)。 作为一个例子,ReSharper的扩展添加菜单项和上下文菜单项,在任何可能的位置(顶部,中部或底部的上下文菜单或菜单项) 怎会去提供这样的功能呢?我是否必须对shell的每个菜单项进行索引,并将扩展名引用索引以将其放置在子项上? 我希望我的问题很清楚。如果没有,我会很乐意补充一些澄清。与MEF
Q
与MEF
1
A
回答
0
我不知道有这样做一个最好的办法。但是,这里有一些想法来考虑:
一个相当简单的解决方法是使用一个单一的合同(即IMenuIten),并使用元数据来控制哪些菜单命令出现在什么位置。要做到这一点的方法之一是有一个“指数”,尽管它也许应该是一张双人床和用于在菜单中的项目,每个项目并不需要知道在菜单中的绝对位置排序。另一种方法是在菜单项上添加元数据,以提供当前项目之前和之后的其他项目列表。然后,您可以对菜单项进行拓扑排序以获得显示它们的订单。
根据菜单行为的复杂程度/动态需求,您可能会发现无法使用导出元数据。在这种情况下,您可能会将功能移至合同本身 - 即在您的IMenuItem合同中添加属性或方法。这样你可以运行代码来计算你需要的值。
另一种解决方案是不出口的菜单项直接的。相反,您可以拥有由组件导入的菜单服务。该服务将有一个注册方法,它将一个菜单项添加到菜单中。在我看来,这使得添加菜单项相当麻烦一些,所以我不会推荐它,除非有你需要它的原因。如果可用菜单项应基于应用程序的当前上下文而改变,则可能是合适的。请注意,如果你这样做,只要有一个导入菜单服务的类不会导致类被创建和组合。该类需要导出系统中其他位置导入的内容。
相关问题
- 1. 与MEF
- 2. 与MEF
- 3. 与MEF
- 4. MEF与反思
- 5. 问题与MEF
- 6. ClickOnce问题与MEF
- 7. MEF懒ImportMany与Creationpolicy.NonShared
- 8. MEF与任何IoC
- 9. 问题与Silverlight和MEF
- 10. MEF导入问题与CreationPolicy
- 11. MEF房产出口与PartCreationPolicy
- 12. 使用mef与asp.net mvc 3
- 13. 与mef的事件接线
- 14. 与MEF碰到麻烦
- 15. MEF 2,泛型导入与实现类
- 16. 填充MEF插件与配置数据
- 17. WCF暴露在MEF插件与Asp.net MVC
- 18. 如何防止模块复制与MEF?
- 19. 导出/导入问题与MEF
- 20. 天冬氨酸MVC 3与NinjectHttpApplication和MEF
- 21. MSMQ/.EXE与Web服务.... MEF IoC?
- 22. 登录窗口与卡利+ MEF MVVM WPF
- 23. MEF(托管扩展框架)与IoC/DI
- 24. 问题与MEF MVVM Silverlight的进口4
- 25. 问题重新构图与MEF
- 26. MEF:注入类型与对象一起?
- 27. 注入与MEF的ILog的和GuyWire
- 28. Autopopulateregionbehaviour + MEF
- 29. 在MEF
- 30. MEF CompositionException