我正在为我的应用程序编写一些测试功能。
在这段测试代码中,我从本地 Json 文件创建了一个文件流,并使用我自己的包装JsonDeserializer
类对其进行反序列化。
using (FileStream fs = new FileStream(pathSource, FileMode.Open, FileAccess.Read))
{
JsonDeserializer<People>.DeserializeStream(fs);
JsonDeserializer<People>.DeserializeEvent += new EventHandler<DeserializeEventArgs<People>>(
delegate(object sender, DeserializeEventArgs<People> e)
{
id = e.DeserializeResult.Id;
});
}
在我的 JsonDeseralizer 类中,它会在反序列化完成时引发一个事件,如下所示:
using (Stream readyToDeserializeStream = new MemoryStream(readyToDeserializeByteArray))
{
DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(T));
T resultObject = (T)jsonSerializer.ReadObject(readyToDeserializeStream);
if (DeserializeEvent != null) <-----this is null
{
DeserializeEvent(null, new DeserializeEventArgs<T>(resultObject));
}
}
但是问题出在第一个代码段中,即使我将处理程序添加到事件中,结果仍然是事件为空(在第二个代码段中)。所以我想知道我是否在第一部分中做错了委托事件处理程序和匿名函数?
请分享您对此的想法,谢谢。
=================更新======================
JsonDeserializer 类中 DeserializeEvent 的定义
public static event EventHandler<DeserializeEventArgs<T>> DeserializeEvent;