Хорошо, я кое-что нашел. :)
http://techdigger.wordpress.com/2007/12/22/deserializing-data-into-a-dynamically-loaded-assembly/
Я использовал этот подход, и он работал без проблем.
Ели определили класс связующего:
internal sealed class VersionConfigToNamespaceAssemblyObjectBinder : SerializationBinder {
public override Type BindToType(string assemblyName, string typeName) {
Type typeToDeserialize = null;
try{
string ToAssemblyName = assemblyName.Split(',')[0];
Assembly[] Assemblies = AppDomain.CurrentDomain.GetAssemblies();
foreach (Assembly ass in Assemblies){
if (ass.FullName.Split(',')[0] == ToAssemblyName){
typeToDeserialize = ass.GetType(typeName);
break;
}
}
}
catch (System.Exception exception){
throw exception;
}
return typeToDeserialize;
}
}
А затем методы сериализации:
public static byte[] Serialize(Object o){
MemoryStream stream = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.AssemblyFormat
= System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple;
formatter.Serialize(stream, o);
return stream.ToArray();
}
public static Object BinaryDeSerialize(byte[] bytes){
MemoryStream stream = new MemoryStream(bytes);
BinaryFormatter formatter = new BinaryFormatter();
formatter.AssemblyFormat
= System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple;
formatter.Binder
= new VersionConfigToNamespaceAssemblyObjectBinder();
Object obj = (Object)formatter.Deserialize(stream);
return obj;
}
И я использую их там, где мне нужно.
protected void SaveAsBinary(object objGraph, string fileName)
{
byte[] serializedData = Serialize(objGraph);
File.WriteAllBytes(fileName, serializedData);
}
protected object LoadFomBinary(string fileName)
{
object objGraph = null;
try
{
objGraph = BinaryDeserialize(File.ReadAllBytes(fileName));
}
catch (FileNotFoundException fne)
{
#if DEBUG
throw fne;
#endif
}
return objGraph;
}
Спасибо за помощь:)