I'm trying to figure out if there is any builtin routines or classes in the .NET framework that could provide a convenient way to test whether a collection implements among the following interfaces and hence hook to the relevant events, if any:

* `IEnumerable`
* `IList`
* `ICollection`
* `IBindingList`
* `IEnumerable <T>`
* `IList <T>`
* `ICollection <T>`
* `IRaiseItemChangedEvents`
* `INotifyCollectionChanged`

Mostly for data-binding purposes...

I can go with a lot of reflections (e.g. IsAssignableFrom) but since it seems to be a pretty common scenario, I was wondering if there was anything already done in that regard.

[EDIT]  

Seems my question is too vague or poorly phrased, my bad. As I indicated a bit later in one of my comments I was more looking for a way to provide a centralized databinding way of doing, could be interested to make UI-agnostic, seems MS provides internally some tooling such as:
<http://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/DataGridViewDataConnection.cs,68950bc360ed4e45,references>
but nothing is public.

Right now, my approach is to wrap up everything with a kind of BindingSource equivalent and check whether the object passed to the constructor implements any of the interface I am willing to hook up with.