无法构建Caliburn Micro教程代码.没有定义';AssemblySource.选择';

本文关键字:定义 选择 AssemblySource 构建 Caliburn Micro 代码 教程 | 更新日期: 2023-09-27 18:11:14

我正在尝试按照Caliburn Micro的教程开始使用http://www.mindscapehq.com/blog/index.php/2012/2/1/caliburn-micro-part-4-the-event-aggregator/

但是,教程中的代码会产生错误。在该页面上,提供了以下引导程序代码:

using Caliburn.Micro;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using System.ComponentModel.Composition.Primitives;
public class AppBootstrapper : Bootstrapper<AppViewModel>
{
  private CompositionContainer container;
  protected override void Configure()
  {
    container = new CompositionContainer(new AggregateCatalog(AssemblySource.Instance.Select(x => new AssemblyCatalog(x)).OfType<ComposablePartCatalog>()));
    CompositionBatch batch = new CompositionBatch();
    batch.AddExportedValue<IWindowManager>(new WindowManager());
    batch.AddExportedValue<IEventAggregator>(new EventAggregator());
    batch.AddExportedValue(container);
    container.Compose(batch);
  }
  protected override object GetInstance(Type serviceType, string key)
  {
    string contract = string.IsNullOrEmpty(key) ? AttributedModelServices.GetContractName(serviceType) : key;
    var exports = container.GetExportedValues<object>(contract);
    if (exports.Count() > 0)
    {
      return exports.First();
    }
    throw new Exception(string.Format("Could not locate any instances of contract {0}.", contract));
  }
}

我找不到名为Bootstrapper的类(泛型或其他类(,但我已经能够扩展BootstrapperBase了。

然而,我在声明container的线路上遇到了麻烦。AssemblySource没有名为Select的方法。

那是什么呢?这是2.0版和1.0版的区别吗?如果是的话,有没有一些更新的学习材料我可以参考?

无法构建Caliburn Micro教程代码.没有定义';AssemblySource.选择';

1.5.2和2.0.0之间发生了一些突破性的变化。文件中概述了其中的大部分内容。虽然看起来缺少对引导程序的更改。这个问题应该很快就会解决。

应该继承Bootstrapper并添加一个类似的方法,而不是继承Bootstrapper<T>

protected override void OnStartup(object sender, StartupEventArgs e)
{
    DisplayRootViewFor<AppViewModel>();
}

到您的引导程序。

缺少方法Select是因为AssemblySource.InstanceIObservableCollection,而Select方法是LINQ扩展方法。为System.Linq添加using将更正该错误。