Добрый день! Столкнулся с такой проблемой, что при запуске команды в AutoCAD, которая десериализует текстовый файл, выпадает ошибка
Не удалось загрузить тип System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[GraphAssembly.Node, GraphAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], необходимый для десериализации.
Странно, что код десериализации файла работает, если запустить его в новом, например, консольном проекте.
Подскажите, пожалуйста, с чем это может быть связано, как исправить?
var res = new GraphAssembly.Graph();
using (var s = File.Open(pathTofileGraph, FileMode.Open))
{
var bFormatter = new BinaryFormatter();
bFormatter.AssemblyFormat =
System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple;
bFormatter.Binder = new MyBinder(); // MyBinder class code given below
try
{
res = (Graph)bFormatter.Deserialize(s);
var print = res.Print();
}
catch (SerializationException se)
{
Debug.WriteLine(se.Message);
}
}
internal sealed class MyBinder : SerializationBinder
{
public override Type BindToType(string assemblyName, string typeName)
{
Type ttd = null;
try
{
string toassname = assemblyName.Split(',')[0];
Assembly[] asmblies = AppDomain.CurrentDomain.GetAssemblies();
foreach (Assembly ass in asmblies)
{
if (ass.FullName.Split(',')[0] == toassname)
{
ttd = ass.GetType(typeName, false, true);
if (ttd is null)
{
Debug.WriteLine($"Не найден тип \"{typeName}\" в сборке {toassname}");
}
else break;
}
}
}
catch (System.Exception e)
{
Debug.WriteLine(e.Message);
}
return ttd;
}
}