Browse Source

Fix FileCodeModel.CodeElements returning wrong item at index.

pull/375/head
Matt Ward 12 years ago
parent
commit
32d1bab1f6
  1. 60
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElementsList.cs

60
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElementsList.cs

@ -24,14 +24,10 @@ using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.PackageManagement.EnvDTE namespace ICSharpCode.PackageManagement.EnvDTE
{ {
public class CodeElementsList<T> : MarshalByRefObject, global::EnvDTE.CodeElements, IList<T> public class CodeElementsList<T> : MarshalByRefObject, global::EnvDTE.CodeElements
where T : global::EnvDTE.CodeElement where T : global::EnvDTE.CodeElement
{ {
List<T> elements = new List<T>(); readonly List<T> elements = new List<T>();
public CodeElementsList()
{
}
public int Count { public int Count {
get { return elements.Count; } get { return elements.Count; }
@ -60,58 +56,16 @@ namespace ICSharpCode.PackageManagement.EnvDTE
return elements.Single(item => item.Name == name); return elements.Single(item => item.Name == name);
} }
public T this[int index] { internal void Add(T element)
get { return elements[index]; }
set { elements[index] = value; }
}
bool ICollection<T>.IsReadOnly {
get { return false; }
}
public int IndexOf(T item)
{
return elements.IndexOf(item);
}
public void Insert(int index, T item)
{
elements.Insert(index, item);
}
public void RemoveAt(int index)
{
elements.RemoveAt(index);
}
public void Add(T item)
{
elements.Add(item);
}
public void Clear()
{
elements.Clear();
}
public bool Contains(T item)
{
return elements.Contains(item);
}
public void CopyTo(T[] array, int arrayIndex)
{ {
elements.CopyTo(array, arrayIndex); elements.Add(element);
} }
public bool Remove(T item) internal void AddRange(IEnumerable<T> items)
{ {
return elements.Remove(item); foreach (T element in items) {
Add(element);
} }
IEnumerator<T> IEnumerable<T>.GetEnumerator()
{
return elements.GetEnumerator();
} }
} }
} }

Loading…
Cancel
Save