所以,只需在此处发布此信息,看看是否存在解决方案,或者我的方法是否必须重新考虑。
目前我有一个主应用程序,它创建一个子appDomain并将一个程序集加载到该appDomain中,程序集本身是动态生成的,可以包含各种可序列化的对象。
我希望能够做的是使用binaryFormatter序列化子appDomain中的对象,然后在主appDomain中对其进行反序列化,而不必将动态生成的程序集加载到我的主appDomain中。
实施例
使用代码在子appDomain中创建二进制流。
private byte[] WriteToByteArray()
{
var stream = new MemoryStream();
using (var writer = new System.IO.BinaryWriter(stream))
{
using (var ms = new System.IO.MemoryStream())
{
var f = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
f.Serialize(ms, _value);
var binArray = ms.GetBuffer();
writer.Write(binArray.Length);
writer.Write(binArray);
}
}
return stream.GetBuffer();
}
然后在主appDomain
private object ReadFromByteArray(byte[] binaryArray)
{
using (var ms = new System.IO.MemoryStream(binaryArray))
{
var f = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
return f.Deserialize(ms);
}
}
如果它在同一个appDomain中执行,或者生成的程序集已加载到两个appDomain中,但是在主appDomain中未加载程序集的类型中执行反序列化时将无法加载“无法加载文件或程序集”,则此代码将起作用并输入不存在
我的问题是,是否可以通过将子AppDomain指向对象类型的信息源来以某种方式反序列化byte []?
我希望我有意义