EventAggregator Helper泛型方法

本文关键字:泛型方法 Helper EventAggregator | 更新日期: 2023-09-27 18:12:34

为什么会出现编译器错误?

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

错误为:

严重性代码描述项目文件行禁止显示状态错误CS0310"T"必须是具有公共无参数构造函数的非抽象类型,才能将其用作泛型类型或方法"IEventAggregator.GetEvent(("EntitySetGridTWPF D:''DEVELOPER.NET''Commercial''EntityBookCommon''EntitySetGridTWPF''EventAggregation''EventAggressionHelper.cs 9 Active 中的参数"TEventType">

在线:

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

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

提前谢谢。

EventAggregator Helper泛型方法

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

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