Try this:
public sealed class CurrentAssemblyDeserializationBinder : SerializationBinder
{
public override Type BindToType(string assemblyName, string typeName)
{
return Type.GetType(String.Format("{0}, {1}", typeName, Assembly.GetExecutingAssembly().FullName));
}
}
formatter.Binder = new CurrentAssemblyDeserializationBinder();
formatter.Deserialize(inStream);
Thread Poster Added:
Yes, it works. Just make sure if any types of System.Generic or other Libs in the binary data are present, then you have to pass them through without changes.
"ResizableControls" - old Assembly lib' name, "EntityLib" - new Assembly name.
Also, the Version number is to be replaced as well, on demand.
public sealed class CurrentAssemblyDeserializationBinder : SerializationBinder
{
public override Type BindToType(string assemblyName, string typeName)
{
string name;
if (assemblyName.Contains("ResizableControl"))
{
name = Assembly.GetAssembly(typeof(EntityLib.Pattern)).ToString();
}
else
{
name = assemblyName;
}
return Type.GetType(String.Format("{0}, {1}",
typeName.Replace("ResizableControl", "EntityLib"), name));
}
}
Thanks, it is exactly what I needed.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…