public ItemsSourceView(object source) { if (source == null) { throw new ArgumentNullException("Argument 'source' is null."); } if (source is IList <object> vector) { m_vector = vector; ListenToCollectionChanges(vector); } else { // The bindable interop interface are abi compatible with the corresponding // WinRT interfaces. if (source is _IBindableVector bindableVector) // IList { m_vector = ListAdapter.ToGeneric(bindableVector); ListenToCollectionChanges(bindableVector); } else if (source is IReadOnlyList <object> readOnlyList) { m_vectorView = readOnlyList; ListenToCollectionChanges(readOnlyList); } else { if (source is IEnumerable <object> iterable) { m_vector = WrapIterable(iterable); } else { if (source is _IBindableIterable bindableIterable) { m_vector = WrapIterable(bindableIterable); } else { throw new ArgumentException("Argument 'source' is not a supported vector."); } } } } m_uniqueIdMaping = source as IKeyIndexMapping; }