Lately, I started using the OnDeserialized event to do some stuff after an object is deserialized. It works fine when I compile it on my machine, unfortunately, when compiled on our build machine, I get the following error when deserializing my object with mono : System.NotSupportedException: Collection is read-only at System.Array.InternalArray__RemoveAt[Object] (Int32 index) [0x00000] in /tmp/scratch/BUILD/mono-1.2.3.1/mcs/class/corlib/System/Array.cs:131 at (wrapper managed-to-managed) Croesus.EntityManagement.IAccessControlInformation[]:System.Collections.Gene ric.IList`1.RemoveAt (int) at (wrapper delegate-invoke) System.MulticastDelegate:invoke_void_StreamingContext (System.Runtime.Serialization.StreamingContext) at System.Runtime.Serialization.SerializationCallbacks.Invoke (System.Collections.ArrayList list, System.Object target, StreamingContext context) [0x00064] in /tmp/scratch/BUILD/mono-1.2.3.1/mcs/class/corlib/System.Runtime.Serializatio n/SerializationCallbacks.cs:116 at System.Runtime.Serialization.SerializationCallbacks.RaiseOnDeserialized (System.Object target, StreamingContext contex) [0x00000] in /tmp/scratch/BUILD/mono-1.2.3.1/mcs/class/corlib/System.Runtime.Serializatio n/SerializationCallbacks.cs:136 at System.Runtime.Serialization.ObjectManager.RaiseOnDeserializedEvent (System.Object obj) [0x0000c] in /tmp/scratch/BUILD/mono-1.2.3.1/mcs/class/corlib/System.Runtime.Serializatio n/ObjectManager.cs:186 at System.Runtime.Serialization.ObjectManager.RaiseDeserializationEvent () [0x00025] in /tmp/scratch/BUILD/mono-1.2.3.1/mcs/class/corlib/System.Runtime.Serializatio n/ObjectManager.cs:162 at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadNextObject (System.IO.BinaryReader reader) [0x0001a] in /tmp/scratch/BUILD/mono-1.2.3.1/mcs/class/corlib/System.Runtime.Serializatio n.Formatters.Binary/ObjectReader.cs:117 at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObjectGraph (System.IO.BinaryReader reader, Boolean readHeaders, System.Object& result, System.Runtime.Remoting.Messaging.Header[]& headers) [0x00042] in /tmp/scratch/BUILD/mono-1.2.3.1/mcs/class/corlib/System.Runtime.Serializatio n.Formatters.Binary/ObjectReader.cs:105 at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.NoCheckDeseri alize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler) [0x00077] in /tmp/scratch/BUILD/mono-1.2.3.1/mcs/class/corlib/System.Runtime.Serializatio n.Formatters.Binary/BinaryFormatter.cs:172 at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream) [0x00000] in /tmp/scratch/BUILD/mono-1.2.3.1/mcs/class/corlib/System.Runtime.Serializatio n.Formatters.Binary/BinaryFormatter.cs:129 at Croesus.FrameworkServerInterface.FrameworkSocket.ReadObject () [0x00008] in c:\DailyBuild\Sources\70.0101-CFF\Foundations\FrameworkComponents\FrameworkS erverInterface\FrameworkSocket.cs:493 at Croesus.FrameworkServer.RequestProcessing.ClientConnectionHandler.ReceiveReq uest (ReadStatus readStatus) [0x0001f] in c:\DailyBuild\Sources\70.0101-CFF\Products\FrameworkServer\RequestProcessing \ClientConnectionHandler.cs:168
In both cases, everything is compiled using Visual Studio 2005. The compiled dlls are different when I compare them with a binary diff, but if I use the reflector to dump the source code, they are identical. So basically, the reflector sees both dlls as identical, but mono can't handle one of them. .NET works fine with both. I tried recompiling the dlls many times on both machines. It seems that Visual Studio produces different binaries every time, but there is one constant, the one I compile on my machine works and the one I compile on the build machine doesn't. Looking at the call stack of the error, it seems like the delegate doesn't call the right method. It doesn't call the method that I identified with the OnDeserialized attribute, it calls InternalArray__RemoveAt instead, which triggers the error. Any idea what could be the source of that problem? I'm using mono 1.2.3.1. I will try with the latest sources ASAP. Thanks, Jonathan Gagnon
_______________________________________________ Mono-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-list
