using System; using System.Collections.Generic; interface IMyCollection<T> : ICollection<T> { } class MyCollection<T> : IMyCollection<T> { public void AddRange(IMyCollection<T> items) { } public void AddRange(IEnumerable<T> items) { } public int Count { get { return 0; } } public bool IsReadOnly { get { return false; } } public void Add(T item) { } public void Clear() { } public bool Contains(T item) { return false; } public void CopyTo(T[] a, int i) { } public bool Remove(T item) { return false; } public IEnumerator<T> GetEnumerator() { return null; } System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return null; } } class P { static protected MyCollection<String> foo = new MyCollection<String>(); static protected MyCollection<String> bar = new MyCollection<String>(); static public MyCollection<String> IgnoreTokens { get { if (foo.Count == 0) foo.AddRange(bar); // false error on Mono 2.0 and 2.4: The call is ambiguous between... return foo; } } public static void Main() { } }