Mef Prism v4 - [Импорт] против [ImportingConstructor] - PullRequest
1 голос
/ 26 января 2012

При использовании MEF и Prism v4, каков рекомендуемый способ сделать [Import] с и в чем разница (если таковая имеется) между этими двумя вызовами?

Вариант 1:

public class TestClass
{
    [Import]
    private IRegionManager _RegionManager;

    public TestClass()
    {
        // stuff here
    }
}

Вариант 2:

public class TestClass
{
    private IRegionManager _RegionManager;

    [ImportingConstructor]
    public TestClass(IRegionManger regionManager)
    {
        this._RegionManager = regionManager;
        // stuff here
    }
}

В чем различия между ними? Что рекомендуется?

Ответы [ 2 ]

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

с помощью [ImportingConstructor] вы можете получить доступ к вашему импорту в конструкторе.с помощью [Import] вы можете безопасно получить доступ к вашему импорту в IPartImportsSatisfiedNotification.OnImportsSatisfied ()

я бы порекомендовал [ImportingConstructor] и, между прочим, открытое поле должно быть приватным:)

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

Это вопрос стиля, но я гораздо больше поклонник ImportingConstructor, чем Import на полях. ImportingConstructor позволяет определить объект, который можно использовать как с поддержкой MEF, так и без нее. Контракт понятен и понятен программистам.

Использование Import, с другой стороны, делает ваш класс более удобным для использования из MEF. Разработчики привыкли предоставлять зависимости объекта конструктору, не обращая внимания на все свойства объекта и определяя, какие из них ему нужно установить после построения.

...