我正在为我的应用程序编写一些测试函数。
在这段测试代码中,我从本地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));
}
}
但问题出在第一个代码片段,即使我将处理程序添加到事件中,它仍然是事件为null(在第二个代码片段中)。所以我想知道我是否在第一部分中执行了委托事件处理程序和匿名函数错误?
请分享您的想法,谢谢。
=================更新======================
在JsonDeserializer类中定义DeserializeEvent
public static event EventHandler<DeserializeEventArgs<T>> DeserializeEvent;