dav*_*ooh 1 .net c# dll serialization dynamic
由于我之前的问题(接口的 XML 序列化),我遇到了另一个问题......
我有一个从数据库导出数据的应用程序。导出过程由实现用于调用的公共接口的不同具体类实现。
具体的实现是作为插件 (DLL) 加载的,所以我不会在我的代码中直接引用它们。
我需要将这些具体类的实例作为字节数组序列化到我的数据库中,但是现在当我尝试从字节数组中反序列化它们时,我获得了一个 SerializationException: Unable to find assembly …
我想它是因为我在运行时加载了带有接口的具体实现的 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;
}
Run Code Online (Sandbox Code Playgroud)
您可以挂钩AppDomain.AssemblyResolve事件以根据需要加载程序集。每次运行时需要它无法解析的程序集时都会引发该事件。它为您提供了在抛出“无法找到程序集”异常之前提供程序集的最后机会。示例在我链接的页面上。