如何解决在另一个 DLL 中反序列化 List<T> 的异常
在继承的项目中,尝试反序列化与序列化列表的 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;
}
}
我还使用以这种方式实现的 BindToType 方法创建了一个自定义 SerializationBinder
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 方法?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。