C#通用类型事件args

时间:2012-07-13 22:17:53

标签: c# silverlight events

这是我自定义事件args的类定义

using System;

public class DeserializeEventArgs<T> : EventArgs
{
    public DeserializeEventArgs(T deserializeResult)
    {
        this.DeserializeResult = deserializeResult;
    }

    public T DeserializeResult
    {
        get;
        private set;
    }
}

我想在我要解雇此事件的代码中执行此操作

public event EventHandler<DeserializeEventArgs<T>> DeserializeEvent;

它不会编译(T下的红线表示没有找到类型)。不确定这是否是使用它的正确方式,任何人都有经验请分享一些想法。

谢谢

2 个答案:

答案 0 :(得分:5)

我相信当你宣布你的活动时,你需要给它一个类型来使用,就像你在使用EventHandler一样

public event EventHandler<DeserializeEventArgs<T>> DeserializeEvent;

需要

public event EventHandler<DeserializeEventArgs<YourType>> DeserializeEvent;

答案 1 :(得分:2)

T是一个类型参数 - 实际上是您要使用的实际类型的替身。无论您希望在Deserialize事件中传递什么类型的对象,都应该将其名称放在那里。

如果您的班级被称为“数据”,那么:

public event EventHandler<DeserializeEventArgs<Data>> DeserializeEvent;