gpt4 book ai didi

c# - MEF + WPF + MVVM : Where should AggregateCatalog reside?

转载 作者:太空宇宙 更新时间:2023-11-03 13:55:48 26 4
gpt4 key购买 nike

我正在尝试使用 MEF,但我似乎无法确定应该在哪里创建我的 AggregateCatalogCompositionContainer。我找到了许多示例来说明代码应该是什么:

var moduleCatalog = new AggregateCatalog(
new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly()),
new DirectoryCatalog(moduleDir));
var container = new CompositionContainer(moduleCatalog);
container.ComposeParts(this);

但现在我只需要知道把它放在哪里。应该去:

  1. App.xaml.cs
  2. MainWindow.xaml
  3. 或在我的一个 ViewModel 中。

编辑:应该再用谷歌搜索一下,我想我找到了我要找的东西。

Hosting MEF within application and libraries.

最佳答案

读完后,Hosting MEF within application and libraries ,我决定MEF的组成可以放到App.xaml.cs中。

public partial class App : Application
{
[Import]
public Window TheMainWindow { get; set; }

protected override void OnStartup(StartupEventArgs e)
{
var moduleCatalog = new AggregateCatalog(
new AssemblyCatalog(typeof(App).Assembly),
new DirectoryCatalog(moduleDir));
var container = new CompositionContainer(moduleCatalog);
container.ComposeParts(this);
base.MainWindow = TheMainWindow;
TheMainWindow.Show();
}
}

一些注意事项:

  • StartupUri="MainWindow.xaml" 应该从 App.xaml
  • 中移除
  • 您需要为您的主窗口创建一个属性,导入 它,并为其设置base.MainWindow

关于c# - MEF + WPF + MVVM : Where should AggregateCatalog reside?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12222562/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com