gpt4 book ai didi

c# - 动态加载类型的 SerializationException

转载 作者:太空宇宙 更新时间:2023-11-03 20:28:12 25 4
gpt4 key购买 nike

由于我之前的问题 ( XML serialization of interfaces ) 我得到了另一个问题...

我有一个从数据库导出数据的应用程序。导出过程由实现用于调用的通用接口(interface)的不同具体类实现。

具体实现是作为插件 (DLL) 加载的,因此我不会在我的代码中直接引用它们。

我需要将这些具体类的实例作为字节数组序列化到我的数据库中,但是现在当我尝试从字节数组中反序列化它们时,我得到了一个SerializationException: Unable to find assembly …

我想它是附加的,因为我在运行时加载了带有我接口(interface)的具体实现的 dll...

我该如何解决?

注意我正在使用这段代码反序列化对象:

    public static object DeSerialize(byte[] arrayToDeSerialize)
{
object serializedObject;
using (MemoryStream stream = new MemoryStream(arrayToDeSerialize))
{
//Creating binary formatter to De-Serialize string.
BinaryFormatter formatter = new BinaryFormatter();

//De-Serializing.
serializedObject = formatter.Deserialize(stream);
}
return serializedObject;
}

最佳答案

你可以 Hook AppDomain.AssemblyResolve事件以在需要时加载程序集。每次运行时需要它无法解析的程序集时都会引发该事件。它为您提供了在抛出“无法找到程序集”异常之前提供程序集的最后机会。例子在我链接的页面上。

关于c# - 动态加载类型的 SerializationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9162279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com