Вы можете сделать это, написав свой собственный SerializationBinder
, то есть
class MyCustomBinder : SerializationBinder
{
public override void BindToName(Type serializedType, out string assemblyName, out string typeName)
{
// TODO: turn a Type into a pair of strings
}
public override Type BindToType(string assemblyName, string typeName)
{
// TODO: turn a pair of strings into a Type
}
}
Затем вы должны указать .Binder
в экземпляре BinaryFormatter
, а это должно работать.Вам, конечно, придется выяснить, какими были старые assemblyName
/ typeName
и т. Д., И убедиться, что он ведет себя так в обоих направлениях.
Однако ... и я могу 'Достаточно подчеркнуть это: если вы столкнулись с этой проблемой, BinaryFormatter
, вероятно, просто плохой выбор сериализатора.Существует много альтернативных сериализаторов, которые могли бы работать намного лучше - быть более эффективными и более дружественными к рефакторингу.Пожалуйста, обратите внимание на смену сериализатора.