2010-09-08 77 views
1

我想我现在开始了解如何使用MEF。但即时通讯仍然不确定如何利用MEF来处理控制用户访问的最佳方式。使用MEF处理导航框架的授权/用户访问

例如:我使用silverlight导航框架。并且如果特定用户对其具有权利(即角色,权利要求),则每个导航菜单项将被禁用或根本不显示。

现在我知道我可以设置IsEnabled属性来禁用它们,但我希望更优雅/灵活的方法。

总结: - 每个菜单项都需要是一个MEF模块扩展名(所以它甚至不会下载给无法访问它的用户)。

回答

1

如果您想要使用一种设计,如果用户无法访问扩展名,您实际上不会下载扩展名,则可以将每个扩展名放入单独的XAP中,并且只下载用户的XAP可以访问(使用DeploymentCatalog)。需要有一个XAP列表和每个XAP所需的权限,或者嵌入到主XAP中,或者作为服务器上的某种服务。

+0

感谢。目前我使用Prism进行按需加载。但是,我已经遇到了另一个砖墙--XAP不解决它的类型。当我尝试加载UserControl时,它会发出抱怨(错误),因为xaml组件具有定义的关联的x:Class(即代码隐藏)。你知道MEF是否有同样的行为(限制)? – AlvinfromDiaspar 2010-09-09 04:47:21

+0

我相信关于MEF的问题是肯定的。 – AlvinfromDiaspar 2010-09-09 04:56:39

0

您可以将元数据提供给模块或MEF部件。 元数据可以包含一个角色,或者例如许可证密钥...

并与Lazy<T,TMeta>你可以决定是否要intanciate模块或部分...