You need to pass INotifyPropertyChanged[] , not T[] .
For instance:
Foo<T>(IEnumerable<T> items) where T : INotifyPropertyChanged { Foo(items.Cast<INotifyPropertyChanged>().ToArray()); }
In general, however, it is better to call the IEnumerable version the params version, for example:
Foo(params INotifyPropertyChanged[] items) { Foo((IEnumerable<INotifyPropertyChanged>) items); } Foo<T>(IEnumerable<T> items) where T : INotifyPropertyChanged {
SLaks source share