我想要达到的目标是
ISystemComponent
具有一些属性和方法,因此管理员可以控制每个用户访问级别,并且基于DB记录,MEF组合控件将显示给最终用户。我还想到在导出组件时使用MetaData接口,所以使用这个如何获得所需的结果?
任何正确的方向将不胜感激
答案 0 :(得分:4)
我通过使用模块ID的元数据属性和具有权限的表来完成此操作。
在接口上执行ImportMany,然后使用反射基于元数据属性对其进行过滤,并与表中的权限进行比较。
此博客文章描述了所涉及的所有MEF。
http://blogs.microsoft.co.il/blogs/bnaya/archive/2010/01/20/mef-for-beginner-metadata-part-8.aspx
其他链接..
http://blogs.microsoft.co.il/blogs/bnaya/archive/2010/01/09/mef-for-beginner-toc.aspx
http://mef.codeplex.com/wikipage?title=Exports%20and%20Metadata&referringTitle=Guide
MEF Plugins with Security and Profiles Efficency
MEF with ImportMany and ExportMetadata
这将显示如何从xaml
导入答案 1 :(得分:2)
文章here详细介绍了如何使用AOP将安全问题注入MEF。这可能是这样做的一种方式 - 我没有在MEF中找到任何可以在其他地方使用这种功能的东西。
答案 2 :(得分:0)
我认为PRISM可以完全按照你所描述的那样做。看看this Code Project article。您可以创建多个模块目录(根据用户权限),并按照Here所述从XML动态加载目录:
var catalog = ModuleCatalog.CreateFromXaml(new Uri("catalog.xaml",
UriKind.Relative));
答案 3 :(得分:0)
我使用Cinch和后端SQL表在WPF / MVVM中实现了这一点,后者将控件映射到角色并查看权限。这允许您通过视图模型控制权限,并在任何时候更改可见性。
Cinch协助一些MVVM的苦差事,同时允许你通过MeffedMVVM或Prism来利用MEF。