Нашли возможное решение через SatisfyImports - есть ли лучший путь? - PullRequest
1 голос
/ 26 апреля 2011

Есть ли лучший способ подключить зависимости ??Это зависит от одноэлементного App.Current и предоставления функции, которая предоставляет _container.SatisfyImports.

Есть ли более MEF-tastic способ работы?

Вот часть моего основного приложенияclass

public partial class App : Application
{
    private CompositionContainer _container;    

    ....

    public void SatisfyImportsOnce(Object satifyMe)
    {
        _container.SatisfyImportsOnce(satisfyMe);    
    }
}

Вот тестовый класс, созданный задолго после вызова ComposeParts ...

public class TestClass
{
    public TestClass()
    {
       Console.WriteLine("Created a TestClass");

       ((Microsoft.Samples.XFileExplorer.App)App.Current).SatisfyImportsOnce(this);
    }
}

1 Ответ

0 голосов
/ 01 мая 2011

Я нахожусь в подобной ситуации в приложении WPF, где я хочу, чтобы экземпляр MainWindow импортировал экспорт MEF. Поскольку MEF не создает экземпляр MainWindow, он не будет удовлетворять импортам, если вы не укажете его.

То, как вы это делаете, будет работать, если вы не хотите, чтобы ваш экземпляр был зарегистрирован для повторной компоновки. Если вы хотите перекомпоновки, вы должны позвонить ComposeParts .

Повторная компоновка обновит импорт в вашем классе, если и когда он изменится.

...