7
クラスの名前空間を変更した後、オブジェクトを逆シリアル化できなくなりました。私はSerializationBinder
を実装しました。例:クラスの名前空間を変更した後にbinaryFormatterで逆シリアル化できません
public class TypeNameConverter : SerializationBinder
{
public override Type BindToType(string assemblyName, string typeName)
{
typeName = typeName.Replace("MyOldNamespace", "MyNewNamespace");
return Type.GetType(string.Format("{0}, {1}", typeName, assemblyName));
}
}
BinaryFormatter bf = new BinaryFormatter();
bf.Binder = new TypeNameConverter();
私が手に例外がある:
は 'System.Runtime.Serialization.TypeLoadExceptionHolder' 型に変換することができません 'MyNewNamespace.MyClass'
アセンブリ内の名前空間も変更する必要がありますか。 – d89761
あなたが何を話しているのか正確にはわかりません。私のやったことは、私のdataBaseクラスを自分のプロジェクトから移動して、それ自身のプロジェクトにすることでした。私が知っている限り、変更されたのは名前空間だけでした。 –