EventAggregator Helper 通用方法

EventAggregator Helper Generic method

为什么会出现编译错误?

public class EventAggregationHelper {

    public static SubscriptionToken SubscribeToEvent<T>( IEventAggregator eventAggregator ) where T : EventBase {

        T evt = eventAggregator.GetEvent<T>();
        //T evt = eventAggregator.GetEvent<T>();
        return null;
    }
}

错误是:

Severity Code Description Project File Line Suppression State Error CS0310 'T' must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'TEventType' in the generic type or method 'IEventAggregator.GetEvent()' EntitySetGridTWPF D:\DEVELOPER.NET\Comercial\EntityBookCommon\EntitySetGridTWPF\EventAggregation\EventAggregationHelper.cs 9 Active

在线:

T evt = eventAggregator.GetEvent<T>();

我以前使用过这种方法来调用其他泛型方法并且有效。 GetEvent 有什么特别之处?

提前致谢。

IEventAggregator.GetEvent 有一个 new() 约束,这意味着您的订阅还需要添加 new() 约束,并且您的实现也需要满足 class T,它必须有一个 public 无参数(默认)构造函数(并且不能是抽象的。)

public static SubscriptionToken SubscribeToEvent<T>
            (IEventAggregator eventAggregator) where T : EventBase, new() {