为 Prism Eventaggregator WPF 使用通用的 PubSubEvents

Using generic PubSubEvents for Prism Eventaggregator WPF

我正在尝试包装对 Prism 的 Events from the EventAggregator 的访问以实现可重用性

这是示例代码

protected void Subscription<T1,T2>(Action<T2> OnSubcribe) where T1:CachedEvent<T2>
{
    T1 @event  = _eventAggregator.GetEvent<T1>();
    event.Subcribe(OnSubcribe,true);
    //Some Codes other codes
}

我对 T1CachedEvent 设置了约束,它是 PubSubEvent<TPayload>

的非抽象派生 class

但我仍然遇到错误

'T1' must be a non-abstract type with a public parameterless constructor in order to use it as parameter....

假设这在 C# 中不是真的有效,还有其他选择吗?

更新:

这是我到目前为止所做的 我做了@event一个参数

protected void Subscription<T1,T2>(T1 @event, Action<T2> OnSubcribe) where T1:CachedEvent<T2>
{
    @event.Subcribe(OnSubcribe,true);
    //Some Codes other codes
}

我的应用程序可以运行,但我仍然无法摆脱创建 @event、手动调用 GetEvent 的锅炉点,每次我调用 Subscription

示例:

Subcription(eventAggregator.GetEvent<SomeEventBasedOnCachedEvent>(),AMethodDoneOnSubcribe);

我一直缺少的是 new() 通用类型 T1.

的约束

显然 GetEvent<T> 的 Prism IEventAggregator 要求 T 必须具有无参数构造函数。

protected void Subscription<T1,T2>(Action<T2> OnSubcribe) where T1:CachedEvent<T2>,new()
{
    T1 @event  = _eventAggregator.GetEvent<T1>();
    event.Subcribe(OnSubcribe,true);
    //Some Codes other codes
}