Thanks for everybody's help. I apologize, because the answer was there all
along but I didn't look hard enough initially. I found that subclassing
SerializationBinder and overriding the BindToType method and then setting
the IFormatter.Binder property to an instance of my custom
SerializationBinder class did just what I wanted.

On Sat, 6 Jul 2002 11:09:40 -0700, Robert Chartier
<[EMAIL PROTECTED]> wrote:

>Another option would be to send an upgrade package, that contains the new
>and the old versions of your objects, loop on all serialized objects in
>your database into the old, have some method to do the upgrade to the new,
>and then save with the new.  it would work pretty easily if the amount of
>objects is fairly low.
>
>
>
>
>
>At 10:29 AM 07/06/2002 -0400, you wrote:
>>Serialization has no way of inherently dealing with version issues. And
>>interfaces don't come in to it - serialization looks at your object's
>>internal state via reflection (or a similar mechanism - I don't know
>>that it uses reflection per se).
>>
>>The best way to deal with this problem is to implement ISerializable and
>>implement the two methods (ISerializable::GetObjectData and a private
>>constructor) that are required for serialization.
>>
>>It's really pretty easy - they give you a property bag, and you write
>>stuff to it as a series of name-value pairs. The tough part comes in
>>when you try to rectify the delta between the old object that was saved,
>>and the new one that you're trying to create. But since only you could
>>possibly know how to do this, the runtime leaves it up to you.
>>
>> > -----Original Message-----
>> > From: Moderated discussion of advanced .NET topics. [mailto:ADVANCED-
>> > [EMAIL PROTECTED]] On Behalf Of Paul Currit
>> > Sent: Friday, July 05, 2002 2:31 PM
>> > To: [EMAIL PROTECTED]
>> > Subject: [ADVANCED-DOTNET] Serialization and assembly version
>>redirection
>> >
>> > I am persisting objects to a database using the BinaryFormatter. When
>> > inserting new objects, I call BinaryFormatter.Serialize and store the
>> > object as a byte array in a database table. When getting an object out
>>of
>> > the table I use BinaryFormatter.Deserialize to convert the byte array
>>back
>> > into the object. If the version of the assembly containing the
>> > serializable type changes, can the serialized object in the database
>>be
>> > deserialized with the newer version. In other words, is there any way
>>to
>> > deserialize objects that were originally serialized under a different
>> > version number, as long as the type's interface hasn't changed? Is
>>this
>> > even an appropriate use of the BinaryFormatter, since it is typically
>>used
>> > for ephemeral objects and not persistence?
>> >
>> > I've tried using the <assemblyBinding> config section, but in my
>>tests,
>> > deserialization is ignoring the assembly version redirection.
>> >
>> > You can read messages from the Advanced DOTNET archive, unsubscribe
>>from
>> > Advanced DOTNET, or
>> > subscribe to other DevelopMentor lists at http://discuss.develop.com.
>>
>>You can read messages from the Advanced DOTNET archive, unsubscribe from
>>Advanced DOTNET, or
>>subscribe to other DevelopMentor lists at http://discuss.develop.com.
>
>
>Robert Chartier
>Author and Developer
>604-975-5590
>[EMAIL PROTECTED]
>http://www.aspalliance.com/nothingmn/
>
>You can read messages from the Advanced DOTNET archive, unsubscribe from
Advanced DOTNET, or
>subscribe to other DevelopMentor lists at http://discuss.develop.com.

You can read messages from the Advanced DOTNET archive, unsubscribe from Advanced 
DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.

Reply via email to