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() {
为什么会出现编译错误?
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() {