c# - 反序列化列表的异常在另一个 DLL 中
问题描述
在继承的项目中,尝试反序列化与序列化列表的 dll 不同的 dll 中的通用列表,我得到异常。
列表中的泛型是以下类
[Serializable]
public class NodeData
{
public int EmployeeId { get; set; }
public int? ManagerId { get; set; }
public byte ImageIndex { get; set; }
public int IDRx { get; set; }
}
反序列化它的方法
public static T Deserialize <T> (string serializationFile)
{
//T NodesData = new List<NodeData>();
using (Stream stream = File.Open(serializationFile, FileMode.Open))
{
var bformatter = new BinaryFormatter
{
Binder = new NodeDataLoaderDeserializationBinder()
};
var result = bformatter.Deserialize(stream);
T NodesData = (T)result;
return NodesData;
}
}
我还创建了一个自定义 SerializationBinder,并以这种方式实现了 BindToType 方法
public override Type BindToType(string assemblyName, string typeName)
{
Type typeToDeserialize;
var tn = typeof(List<NodeData>).AssemblyQualifiedName;
typeToDeserialize = Type.GetType(tn, true);
return typeToDeserialize;
}
该方法给我的回报是那个例外
An object of type 'System.Collections.Generic.List`1 [Utility.NodeData] []' cannot be converted to type 'Utility.NodeData []'.
如果我使用 NodeData[] 更改 BindToType 方法中的 typeof,我会得到:
Reference to an object not set to an object instance.
我必须如何实现我的 BindToType 方法?
解决方案
推荐阅读
- java - 将日历对象的时区从 EEST 更改为 HST 会意外更改时间
- javascript - 仅影响已导入样式的组件的样式?
- google-bigquery - 谷歌 bigquery 中的 ROWNUM 或 ROWID
- c# - Optional validation rule in FluentValidation
- octobercms - 如何在 october cms 中安装和设置内容编辑器插件?
- deep-learning - DeepLearning的学习数据(jpeg)和嵌入式系统(raw)的区别
- javascript - 使用 XMLHttpRequest 方法访问 api 时自动设置为“OPTIONS”,但我将方法初始化为“POST、PUT、GET 或 DELETE”
- vb.net - GetResponse 不是 UWP 中 WebRequest 的成员
- android - 在根项目中找不到任务“组装”
- javascript - 在数组中查找对象的数组索引正在影响使用 grunt 的缩小和丑化