2
내가 설정 한 컨테이너 : Prism4 MEF에서 클래스의 인스턴스를 어떻게 만듭니 까?
public class MyBootstrapper : MefBootstrapper
{
protected override void ConfigureAggregateCatalog()
{
AggregateCatalog.Catalogs.Add(xxx.Assembly));
// other assemblies
}
protected override void InitializeShell()
{
base.InitializeShell();
Application.Current.MainWindow = (MainWindow)Shell;
Application.Current.MainWindow.Show();
}
protected override DependencyObject CreateShell()
{
return Container.GetExportedValue<MainWindow>();
}
}
가 어떻게 모듈 내 타입 T의 인스턴스를 만들 수 있습니까? 유형 T는 MEF에 의해 구성된 어셈블리의 어딘가에 정의됩니다.
var myType = XXXX.Resolve<T>();
UPD1 :
는이 같은 몇 가지가 필요합니다. 인 MyModule
[ModuleExport(typeof(CatalogModule))]
public class CatalogModule : IModule
{
private readonly IEventAggregator _event;
private readonly IUIManager _uiManager;
[ImportingConstructor]
public CatalogModule(IEventAggregator @event, IUIManager uiManager)
{
_event = @event;
_uiManager = uiManager;
}
private void Foo()
{
var vm = **How create instance of desired type here?**
}
}
예. Buh 어떻게하면 'Container'를 얻을 수 있습니까? 모듈에서 나는 그것에 대해 아무것도 모른다. – Lari13
모듈은'CompositionContainer' 타입의 MEF 컨테이너에 의존하게 할 수 있습니다 ('ImportingConstructor'에 추가). 부트 스트 래퍼에 컨테이너 인스턴스를 등록해야합니다. ('Container.ComposeExportedValue (Container);). 컨테이너가 생성자에 삽입되고 모든 내보내기를 액세스 할 수 있습니다.) – AbdouMoumen
감사합니다. 지금 나는 그것을 얻었다 :) – Lari13