Сортировка коллекции объектов обобщенного класса - C# (192158)
Формулировка задачи:
Доброго времени суток)
Столкнулся с такой проблемой: не получается отсортировать коллекцию.
Необходимо, чтобы коллекция объектов MyGeneric<T> сортировалась по тому же правилу как и объекты Т.
п.с. Коллекция объекты Т сортируется, а при MyGeneric<T> вылетает exception, хотя в данном примере это всего лишь обертка.
Вот накидал примерчик на list.Sort() краш, помогите пожалуйста разобраться. Спасибо!)
class MyGeneric<T> : IComparable<T> where T : struct, IComparable<T>
{
public T Property { get; set; }
public int CompareTo(T o)
{
return Property.CompareTo(o);
}
}
struct MyType : IComparable<MyType>
{
public int value;
public int CompareTo(MyType o)
{
return value.CompareTo(o.value);
}
}
class Program
{
static void Main(string[] args)
{
List<MyGeneric<MyType>> list = new List<MyGeneric<MyType>>();
for (int i = 10; i > 0; i--)
{
MyType ii = new MyType() { value = i };
MyGeneric<MyType> iii = new MyGeneric<MyType>() { Property = ii};
list.Add(iii);
}
foreach (var c in list)
Console.WriteLine(c.Property.value);
list.Sort();
foreach (var c in list)
Console.WriteLine(c.Property.value);
}
}Решение задачи: «Сортировка коллекции объектов обобщенного класса»
textual
Листинг программы
class MyGeneric<T> : IComparable<MyGeneric<T>> where T : struct, IComparable<T>
{
public T Property { get; set; }
public int CompareTo(MyGeneric<T> other)
{
return this.Property.CompareTo(other.Property);
}
}