protected override int FindCore(PropertyDescriptor prop, object key)
 {
     if (key is T)
     {
         GenericIComparer <T> comparer = GenericComparerFactory.GetComparer <T>(prop.Name, false);
         for (Int32 index = 0; index < Items.Count; ++index)
         {
             if (comparer.Compare(Items[index], (T)key) == 0)
             {
                 return(index);
             }
         }
         return(-1);
     }
     throw new NotSupportedException("Cannot compare Apple With Orange");
 }
        private void InnerPerformSort()
        {
            if (_currentSortPropertyDescriptor == null)
            {
                return;
            }
            List <T> temp = Items.ToList();

            Items.Clear();
            GenericIComparer <T> cmp = GenericComparerFactory.GetComparer <T>(_currentSortPropertyDescriptor.Name, _currentSortDirection == ListSortDirection.Descending);

            temp.Sort(cmp);
            foreach (T element in temp)
            {
                Items.Add(element);
            }
        }