找不到GetEvent <setobjectevent>(缺少指令/参考?) - 我做错了什么..?

时间:2016-09-12 08:47:43

标签: c# mvvm prism eventaggregator

在尝试构建eventaggregator以将object的属性从MainViewModel转移到SectionViewModel时,我尝试过多篇文章(1,{{ 3}},23)关于它是如何工作的,但我似乎错过了一步......?

MainViewModel我有;

protected readonly IEventAggregator eventAggregator;
public MainViewModel(IMainViewModel mainViewModel, IEventAggregator eventAggregator)
{
    ...Some other Code...
    this.eventAggregator = eventAggegator;
}

public Object Object
{
    ...Getter...
    set
    {
        this.object = value;
        this.RaisePropertyChanged();
        this.EventAggregator.GetEvent<SetObjectEvent<Object>>().Publish(this.Object);
    }
}

并在SectionViewModel我有;

protected readonly IEventAggregator eventAggregator;
public SectionViewModel(ISectionViewModel sectionViewModel, IEventAggregator eventAggregator)
{
    this.eventAggregator = eventAggregator;;
    this.eventAggregator.GetEvent<SetObjectEvent<Object>>().Subscribe((object) => { this.Object = object; });
}

两者都抛出了参数excpetion The type or namespace name 'SetObjectEvent<>' could not be found。我认为这是因为我需要一个全局的EventAggregator,但有人指出情况并非如此。

这是大多数文章的重要内容,(至少对我而言)看起来并不会导致任何问题。这对我来说似乎很合乎逻辑,而且我理解它应该做什么。但是,这些文章似乎都没有真正定义'SetObjectEvent'Event?而是创建某种通用EventAggregate,就是这样。这就是我对正在发生的事情失去追踪的地方。对我来说这听起来很合乎逻辑我需要有一个像'Events'这样的类可以保存项目中所有不同的可调用事件,但是我不知道如何实现这个目的? < / p>

编辑;正如4暗示我认为错误不是问题,我更准确地重述了我的问题(?)描述我的问题。

编辑;按要求设置SetObjectEvent类

public class SetObjectEvent<TRequest> : PubSubEvent<SetObjectEvent<TRequest>> where TRequest : IObject {}

派生自this answer

编辑;将其改为

public class SetObjectEvent : PubSubEvent<Object> {}
多个评论中建议的

GetEvent<SetObjectEvent>()GetEvent<SetObjectEvent<Object>>()上提供了相同的参数例外

2 个答案:

答案 0 :(得分:1)

事实证明,问题是哪里(并且只是一点点*)

我将SetObjectEvent置于models指令中,因为我认为它是Event的模型。我假设它在using MyProject.MyModule.Models;命名空间内被MainViewModel正确引用。结果我在浏览更多有关EventAggragator的SO文章时错了。 SetObjectEvent应该作为namespace MyProject.MyModule.SetObjectEvent位于模块名称空间中。

  

*看起来它应该是公共类SetObjectEvent:PubSubEvent {} - dvorn

答案 1 :(得分:-1)

EventAggregator类为您完成所有这些。在内部,它有&#34;事件&#34;字典