public class B<T> { public int Add (T obj) { return -1; } public void AddRange (object o) { T obj = (T) o; Add (obj); } } public interface IA { } public class A : IA { } public class Test { public static void Main () { B<IA> aux = new B<IA> (); aux.AddRange (new A ()); } }