public IType GetArrayType (IReturnType elementType, MonoDevelop.Projects.Dom.Output.Ambience ambience) { // Create a fake class which sublcasses System.Array and implements IList<T> DomType t = new DomType (ambience.GetString (elementType, MonoDevelop.Projects.Dom.Output.OutputFlags.UseFullName) + "[]"); // set the compilation unit of the array type to that of the element type - it's required for jumping to the declaration of the type. IType eType = GetType (elementType); if (eType != null) t.CompilationUnit = eType.CompilationUnit; t.Resolved = true; t.BaseType = new DomReturnType ("System.Array"); t.ClassType = ClassType.Class; t.Modifiers = Modifiers.Public; t.SourceProjectDom = this; DomProperty indexer = new DomProperty (); indexer.Name = "Item"; indexer.SetterModifier = indexer.GetterModifier = Modifiers.Public; indexer.PropertyModifier |= PropertyModifier.IsIndexer; indexer.Add (new DomParameter(indexer, "index", DomReturnType.Int32)); indexer.ReturnType = elementType; t.Add (indexer); DomReturnType listType = new DomReturnType ("System.Collections.Generic.IList", false, new IReturnType [] { elementType }); t.AddInterfaceImplementation (listType); return t; }