Компоненты MEF на основе разрешений пользователей - PullRequest
8 голосов
/ 25 сентября 2011

Я сделал свои первые шаги к MEF несколько месяцев назад, и до сих пор все было хорошо. Что я хочу сделать, так это использовать MEF в моих реальных приложениях и загружать или, можно сказать, отображать компоненты пользовательского интерфейса, основываясь на разрешениях аутентифицированных пользователей. Я занимаюсь разработкой системы управления пациентами для клиники и хочу реализовать сценарий, в котором компоненты пользовательского интерфейса MEF отображаются в зависимости от типа пользователя. например, если аутентифицированный пользователь - доктор, я хочу показать определенные компоненты и скрыть другие.

Я пытаюсь достичь чего-то вроде

ISystemComponent, который имеет некоторые свойства и методы, позволяющие администратору контролировать каждый уровень доступа пользователя, и на основе записей в БД MEF-элементы будут отображаться конечному пользователю. Я также думаю об использовании интерфейса MetaData при экспорте компонентов, поэтому, используя это, как я могу получить желаемый результат?

будет оценено любое правильное направление

Ответы [ 4 ]

4 голосов
/ 03 октября 2011

Я сделал это, используя атрибут метаданных для идентификатора модуля и таблицу с разрешениями.

Выполните ImportMany на интерфейсе, затем отфильтруйте его на основе атрибута метаданных с помощью отражения и сравните с разрешениями в таблице.

В этой записи блога описаны все задействованные МЭФ.

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 с безопасностью и эффективностью профилей

MEF с ImportMany и ExportMetadata

Это покажет, как импортировать из xaml

http://blogs.microsoft.co.il/blogs/bnaya/archive/2010/03/20/mef-for-beginner-import-from-xaml-part-11.aspx

2 голосов
/ 27 сентября 2011

В статье здесь подробно описывается использование AOP для введения проблем безопасности в MEF. Это может быть одним из способов сделать это - я не нашел в MEF ничего такого, что могло бы позволить такую ​​функциональность где-либо еще.

0 голосов
/ 04 октября 2011

Я реализовал это в WPF / MVVM, используя Cinch и внутренние таблицы SQL, которые отображали элементы управления на роли и разрешения на просмотр. Это позволяет вам контролировать разрешения с помощью модели представления и изменять видимость в любой точке.

Cinch помогает с некоторыми трудностями MVVM, позволяя вам использовать MEF через MeffedMVVM или Prism.

0 голосов
/ 27 сентября 2011

Я думаю, что PRISM может сделать именно то, что вы описали. Взгляните на эту статью проекта кода . Вы можете создать несколько каталогов модулей (согласно разрешениям пользователя) и динамически загружать каталог из XML, как описано Здесь :

var catalog = ModuleCatalog.CreateFromXaml(new Uri("catalog.xaml", 
                                                 UriKind.Relative));
...