Выставлять «услуги» импорту MEF - PullRequest
1 голос
/ 16 января 2012

Импортировать детали в MEF очень просто.

[ImportMany(typeof(IModule))]
public List<IModule> Modules {get; set;}

Но приложение оболочки должно иметь возможность предоставлять некоторые услуги деталям.

Например, приложение оболочки имеет доступ кdatalayer, знает об аутентификации и авторизации, и т.д ...

Есть ли простое решение.(возможно это действительно легкая задача?) Любые лучшие методы?

1 Ответ

2 голосов
/ 16 января 2012

Почему бы не экспортировать эти службы?

[Export(typeof(IMyService))]
public class MyService : IMyService
{
    ...
}

Если служба связана с оболочкой, а оболочка отвечает за ее настройку, вы можете экспортировать ее как свойство оболочки;в этом случае вам нужно удалить атрибут экспорта из класса MyService и получить следующее:

public class Shell : Window
{
    [Export]
    public IMyService MyService
    {
        get
        {
            MyService service = new MyService();

            // initialize service

            return service;
        }
    }
}

Тогда каждая часть может импортировать и использовать их.

[ModuleExport(typeof(MyModule))]
public class MyModule : IModule
{
    [Import]
    public IMyService MyService { get; set; }
}

Таким образом, вызнать, что служба настроена оболочкой при импорте.

...