首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EventAggregator帮助泛型方法

EventAggregator帮助泛型方法
EN

Stack Overflow用户
提问于 2016-10-10 10:52:17
回答 1查看 356关注 0票数 1

为什么这会导致编译器错误?

代码语言:javascript
复制
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;
    }
}

错误是:

严重性代码描述项目文件行抑制状态错误D:\DEVELOPER.NET\Comercial\EntityBookCommon\EntitySetGridTWPF\EventAggregation\EventAggregationHelper.cs 'T‘必须是具有公共无参数构造函数的非抽象类型,才能将其用作泛型类型或方法'IEventAggregator.GetEvent()’EntitySetGridTWPF EntitySetGridTWPF 9活动中的参数'TEventType‘。

在线路上:

代码语言:javascript
复制
T evt = eventAggregator.GetEvent<T>();

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

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-10 10:57:09

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

代码语言:javascript
复制
public static SubscriptionToken SubscribeToEvent<T>
            (IEventAggregator eventAggregator) where T : EventBase, new() {
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39956619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档