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有什么特别之处?
提前谢谢。
IEventAggregator.GetEvent
有一个new()
约束,这意味着您的订阅还需要添加new()
约束,这也需要由您的实现类T
来实现,它必须有一个公共的无参数(默认(构造函数(并且不能是抽象的(
public static SubscriptionToken SubscribeToEvent<T>
(IEventAggregator eventAggregator) where T : EventBase, new() {