Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Copy a class to avoid the referenced object going away
Message
From
06/11/2010 13:38:02
Timothy Bryan
Sharpline Consultants
Conroe, Texas, United States
 
 
General information
Forum:
ASP.NET
Category:
Coding, syntax and commands
Environment versions
Environment:
C# 4.0
Miscellaneous
Thread ID:
01488462
Message ID:
01488470
Views:
27
>>>>Hi All,
>>>>
>>>>I am trying to build a list of objects but if the underlying referenced object changes or goes away I have problems. To avoid this I am trying some code I found on c-shaprcorner to copy an object. I have tried two different versions, but both blow up on the third line and I am unable at the moment to find why. The objects passed in appear to be valid and the entity object has the [serializable] attribute on it.
>>>>
>>>>Option One
>>>>
>>>>public static LocationEntity MakeEntityCopy(LocationEntity entityToIsolate)
>>>>{
>>>>	MemoryStream stream = new MemoryStream();
>>>>	IFormatter formatter = new BinaryFormatter();
>>>>	formatter.Serialize(stream, entityToIsolate);
>>>>	stream.Seek(0, 0);
>>>>	LocationEntity IsolatedEntity = (LocationEntity)formatter.Deserialize(stream);
>>>>	stream.Close();
>>>>	return IsolatedEntity;
>>>>}
>>>>
>>>>
>>>>Option Two
>>>>
>>>>public static LocationEntity MakeEntityCopy(LocationEntity entityToIsolate)
>>>>{
>>>>	MemoryStream stream = new MemoryStream();
>>>>	BinaryFormatter bf = new BinaryFormatter();
>>>>	bf.Serialize(stream, entityToIsolate);
>>>>	stream.Position = 0;
>>>>	LocationEntity IsolatedEntity = (LocationEntity)bf.Deserialize(stream);
>>>>	stream.Close();
>>>>	return IsolatedEntity;
>>>>}
>>>>
>>>>
>>>>Is there anything obvious I am missing?
>>>
>>>What is LocationEntity ? Simply marking it as serializable doesn't neccessarily make it so .....
>>>And what's the exact exception ?
>>
>>
>>OK, stupid me. I wrapped the call in a try catch and this is the error
>>Type 'BTSystems.PantryWare.Business.ABusinessEntity' in Assembly 'BTSystems.PantryWare.Business, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.
>>
>>What is needed for the class to be Serializable other than the attribute?
>
>The serializer will try to serialize the complete object tree. That means that all properties of the class must be serializable. Which, for example, means that if a property holds a reference to another object the serializer will attempt to serialize that as well. Look carefully at the members of the class you are trying to serialize. If there are any properties that are not essential then mark them as non-serializable. If there are items that are essential but are not natively serializable then you can implement your own SerializationSurrogate to handle them.

Ok, This may mean I am out of gas on this effort. The ABusinessEntity from which this inherits doesn't have anything in it, but it inherits from the mmBusinessEntity class which is also marked as serializable but has several additional properties. I can't really adjust that. I have serialied entities before without this issue, but I may have to look back on that code to see what I was doing different.
Thanks
Tim
Timothy Bryan
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform