[Mono-bugs] [Bug 76235][Wis] Changed - Mono/.NET interoperability of System.Collections.Specialized

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Mon Oct 10 07:38:46 EDT 2005

Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by svetlanaz at mainsoft.com.


--- shadow/76235	2005-10-09 22:09:25.000000000 -0400
+++ shadow/76235.tmp.7284	2005-10-10 07:38:46.000000000 -0400
@@ -49,6 +49,35 @@
 ------- Additional Comments From robertj at gmx.net  2005-10-09 22:09 -------
 You cannot simply add ISerializable to the inheritance
 list of ListDictionary and HybridDictionary, because
 it breaks the API compatibility with MSFT's runtime.
+------- Additional Comments From svetlanaz at mainsoft.com  2005-10-10 07:38 -------
+Hi all,
+The compatibility of the inner representation of the Mono and .NET 
+classes is very important, and, in some cases, we need to break API 
+compatibility to achieve it. If a class is not implement 
+ISerializable interface and it has different from .NET inner 
+structure, we have a problem with interoperability, specially in 
+remoting, where the server and the client can run on different 
+machines with different runtimes. This problem raises not only in the 
+System.Collection.Specialized namespace, and we should make a global 
+decision about an our behavior in this case.
+For example, one of the possible solutions is to add some new 
+attribute to the Serializable class (for instance, 
+MonoSerializationCompatibilityAttribute) and the Mono runtime will 
+treat such class in the same manner as ISerializable, but outside to 
+the clients the class will be seen as regular serializable class 
+according to the .NET API. This solution requires changes in the 
+Mono's runtime. Another possibility is to change implementation of 
+the class to be fully compatible with implementation in .NET. In the 
+HybridDictionary class, for example, we should return the previous 
+version of the class and treat Hashtable and List as two separate 
+fields. Another alternative is to break the API compatibility and 
+implement the ISerializable interface to manage the serialization 
+info, as I made.
+What strategy is appropriate? Any other ideas?

More information about the mono-bugs mailing list