Pregunta

Tengo un proyecto que utiliza BinaryFormatter para serializar una colección de estructuras con una cuerda y bool? tipos de datos.

La serialización / deserialización funciona bien, sin embargo, si tuviera que cambiar el conjunto que hace el trabajo que no puede deserializar a causa de la cabecera en el archivo binario que indica que se requiere Assembly x en lugar de Assembly y para manejar los datos .

¿Es posible configurar la serialización / deserialización sea ensamblaje agnóstico?

¿Fue útil?

Solución

Puede controlar la forma en que el formateador binario resuelve sus tipos mediante la asignación de un SerializationBinder personalizado al formateador. De esta manera, usted no tendrá que meterse con los eventos de resolver el dominio de aplicación y eliminar el riesgo de efectos secundarios inesperados de eso.

No es un ejemplo detallado a MSDN .

Otros consejos

Puede cambiar su AssemblyFormat propiedad BinaryFormatter para hacer la serialización independiente de la versión de ensamblado.

// Example
var binFormat = new BinaryFormatter();
binFormat.AssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple;

gancho en el caso AppDomain.OnAssemblyResolve y fijar en marcha los nombres de montaje

private System.Reflection.Assembly OnAssemblyResolve( System.Object sender, System.ResolveEventArgs reArgs )
{
     foreach( System.Reflection.Assembly assembly in System.AppDomain.CurrentDomain.GetAssemblies() ) 
     {
         System.Reflection.AssemblyName assemblyName = assembly.GetName();
         if( assemblyName.FullName == reArgs.Name ) 
         {
              return( assembly );
         }
     }
}

Fuente: http://osdir.com/ ml / windows.devel.dotnet.clr / 2003-12 / msg00441.html

Hay altenative motores (binario) de serialización ( como este ) que aren 'montaje t dependiente.

El GAC es su primer recurso, lo que permite diferentes versiones del conjunto de coexistir lado-a-lado. Pero que en realidad no resuelve nada menos que su aplicación es la versión tolerante también. serialización binaria tiene varias características para manejar la versión de serialización tolerante. Leer sobre ello en este biblioteca artículo .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top