【问题标题】:Caliburn.Micro IEventAggregator Publish method missing an overloadCaliburn.Micro IEventAggregator Publish 方法缺少重载
【发布时间】:2014-07-29 05:06:03
【问题描述】:

我第一次通过一些在线教程学习 Caliburn.Micro。一些教程使用的是较旧的 1.3.0 版本,我使用的是较新的 2.0.0.6 版本,这是最新的 Nuget 包,这可能是这种差异的根源:

尝试发布以下消息时:

public void Red()
{
_events.Publish(new ColorEvent(new SolidColorBrush(Colors.Red)));
}

编译器抛出一个错误,指出未找到重载。唯一可用的 Publish 重载具有以下签名: 无效发布(对象消息,动作元帅)

我通过使用下面显示的后台工作线程方法使其工作,但在我的情况下,这似乎有点矫枉过正。单参数重载真的从 Caliburn.Micro 中移除了吗?

此外,文档在这里: https://caliburnmicro.codeplex.com/wikipage?title=The%20Event%20Aggregator 仍然使用更基本的单参数示例显示示例,您只需传递消息。此链接上的文档是正确描述 2.0.0.6 的最新文档吗?

public void Red()
{
_events.Publish(new ColorEvent(new SolidColorBrush(Colors.Red)), 
action => Task.Factory.StartNew(action));
}

最后,奖励积分:

除了在后台线程上发布消息之外,第二个参数还有什么用处?有人可以举一些其他例子来说明这个重载可以用来做什么吗?

【问题讨论】:

    标签: caliburn.micro


    【解决方案1】:

    在 Caliburn Micro 版本 2.0 中,EventAggregator.Publish 方法也采取行动来封送事件。要保持 2.0 之前的行为,您应该改用 EventAggregator.PublishOnUIThread 方法。有关 1.5 和 2.0 之间不兼容的信息,请参阅迁移说明 here

    总的来说,我认为 Codeplex 文档有点过时了。请参阅new dedicated web site 了解最新的documentation

    【讨论】:

    • 2.0.2中没有EventAggregator.PublishOnUIThread :(
    • 我用 .Publish(value, new EventAggregator().PublishOnUIThread) 管理它,其中 PublishOnUIThread 是 Caliburn.Micro.EventAggregatorExtensions 命名空间的扩展方法
    猜你喜欢
    • 2017-06-28
    • 1970-01-01
    • 2014-05-13
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多