找不到 GetEvent<SetObjectEvent>(缺少 directive/reference?)- 我做错了什么..?

GetEvent<SetObjectEvent> could not be found (missing directive/reference?) - what am I doing wrong ..?

在尝试构建事件聚合器以将我的 object 的属性从 MainViewModel 转移到 SectionViewModel 时,我尝试关注多篇文章 (1, 2, 3 and 4 )至于这是如何工作的,但我似乎错过了一步..?

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; });
}

谁都抛出参数异常The type or namespace name 'SetObjectEvent<>' could not be found。我以为这是因为我需要一个全局 EventAggregator,但有人指出事实并非如此。

这是大多数文章的主旨,(至少对我而言)看起来没有引起任何问题。这对我来说似乎很合乎逻辑,我明白它应该做什么。但是,none的帖子好像真的是定义了'SetObjectEvent'Event?相反,创建某种通用的 EventAggregate 就是这样。这就是我对正在发生的事情有点迷失的地方。对我来说,这听起来很合乎逻辑,我需要有一个 class 之类的东西,比如 'Events' ,它可以容纳项目中所有不同的可调用事件,但我不知道如何完成这个?

编辑;由于 暗示我认为错误的不是问题,我改写了我的问题以更准确地(?)描述我的问题。

编辑;根据要求,SetObjectEvent class

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

源自

编辑;将其更改为

public class SetObjectEvent : PubSubEvent<Object> {}

如多条评论中所建议,在 GetEvent<SetObjectEvent>()GetEvent<SetObjectEvent<Object>>()

上都给出了相同的参数异常

EventAggregator class 为您完成这一切。在内部,它有 "events" 字典

事实证明,问题是哪里(还有一点点如何*)

我将 SetObjectEvent 放在模型指令中,因为我认为它是事件的模型。我假设它会在 MainViewModel 命名空间中用 using MyProject.MyModule.Models; 正确引用。事实证明我在浏览更多有关 EventAggragator 的 SO 文章时错了。 SetObjectEvent 应该作为 namespace MyProject.MyModule.SetObjectEvent 位于模块命名空间中。

*Seemingly it should be public class SetObjectEvent: PubSubEvent {} – dvorn