/// <summary> /// Gets the type of the inner list of a IList>IList< /// </summary> /// <param name="list">The list.</param> /// <returns> /// The type of the inner list. Return <c>null</c> if only interface type can be retrieved. /// </returns> public static Type GetInnerTypeOfList(IList list) { var innerType = TypeHelper.GetInnerMostGenericType(list); if (innerType != null && innerType.IsInterface) { if (list.Count > 0) { var row = list[0] as IList; if (row != null && row.Count > 0) { // Get the type from the [0][0]. The assumption is all the elements in the ItemsSource are of the same type. innerType = row[0].GetType(); } } else { innerType = null; } } return(innerType); }
/// <summary> /// Gets the item type. /// </summary> /// <returns> /// The type of the elements in the list. /// </returns> public override Type GetItemsType() { return(TypeHelper.GetInnerMostGenericType(this.ItemsSource)); }