I came across this kind of by accident. I wanted to have a typed return from an ArrayList and I was already using ArrayList so I just created my own class and derived it from ArrayList. I used the "new" keyword to hide the array indexer and cast the return to a string. (I know! I would not do this for real, but I was just testing something to see if it would work. :-) I create an object of the derived class, add a few strings and XmlSerialize it to disk. Under Window's .NET framework 1.1 it generates an .xml file with the strings I added. Under Mono/RH9 I get a "Ambiguous matching in method resolution" error.
I know this is terrible code, but technically I think it should still work. Below is a test program I've found duplicates the problem. This works ok on Windows with the following XML output: [WINDOWS XP Pro on .NET 1.1] <?xml version="1.0"?> <ArrayOfAnyType xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <anyType xsi:type="xsd:string">Test1</anyType> <anyType xsi:type="xsd:string">Test2</anyType> <anyType xsi:type="xsd:string">Test3</anyType> </ArrayOfAnyType> [MONO 0.25 on RedHat 9] [EMAIL PROTECTED] sish]$ mono MethodHideTest.exe Ambiguous matching in method resolution in <0x001ee> 00 System.MonoType:GetPropertyImpl (string,System.Reflection.BindingFlags,System.Reflection.Binder,System.Type, System.Type[],System.Reflection.ParameterModifier[]) in <0x00070> 00 System.Type:GetProperty (string) in <0x00222> 00 System.Xml.Serialization.XmlSerializationWriterInterpreter:WriteListContent (System.Xml.Serialization.TypeData,System.Xml.Serialization.ListMap,object) in <0x00190> 00 System.Xml.Serialization.XmlSerializationWriterInterpreter:WriteListElement (System.Xml.Serialization.XmlTypeMapping,object,string,string) in <0x00308> 00 System.Xml.Serialization.XmlSerializationWriterInterpreter:WriteObject (System.Xml.Serialization.XmlTypeMapping,object,string,string,bool,bool,bool ) in <0x00145> 00 System.Xml.Serialization.XmlSerializationWriterInterpreter:WriteObject (object) in <0x0000e> 00 System.Xml.Serialization.XmlSerializer:Serialize (object,System.Xml.Serialization.XmlSerializationWriter) in <0x00045> 00 System.Xml.Serialization.XmlSerializer:Serialize (System.Xml.XmlWriter,object,System.Xml.Serialization.XmlSerializerNamespace s) in <0x00070> 00 System.Xml.Serialization.XmlSerializer:Serialize (System.IO.Stream,object) in <0x0010d> 00 MethodHideTest.Class1:Main (string[]) ----------------- [The test program] file: "Class1.cs" using System; using System.Xml.Serialization; using System.IO; namespace MethodHideTest { /// <summary> /// Summary description for Class1. /// </summary> class Class1 { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main(string[] args) { MyArrayList myList = new MyArrayList(); myList.Add("Test1"); myList.Add("Test2"); myList.Add("Test3"); XmlSerializer xs = new XmlSerializer(typeof(MyArrayList) ); FileStream fs = null; try { fs = File.Open("testout.xml", FileMode.Create, FileAccess.Write); } catch (Exception e) { Console.WriteLine(e.Message); return; } try { xs.Serialize(fs, myList); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.InnerException); Console.WriteLine(ex.StackTrace); return; } finally { fs.Close(); } Console.WriteLine("Hit 'Enter' to exit..."); Console.ReadLine(); } } } file: "MyArrayList.cs" using System; namespace MethodHideTest { /// <summary> /// /// </summary> public class MyArrayList : System.Collections.ArrayList { public MyArrayList() : base() { } public new object this[ int index ] { get { return (string)base[index]; } } } } _______________________________________________ Mono-list maillist - [EMAIL PROTECTED] http://lists.ximian.com/mailman/listinfo/mono-list
