Я пытаюсь сортировать массив объектов с помощью IComparer.Общий IComparer для сортировки разных объектов в разных свойствах
Я написал код, но он работает только с конкретным объектом. например .:
для этого класса
public class Cars
{
public string Name { get; set; }
public string Manufacturer { get; set; }
public int Year { get; set; }
public Cars(string name, string manufacturer, int year)
{
Name = name;
Manufacturer = manufacturer;
Year = year;
}
}
Мой код выглядит как:
class MySort
{
public class SortByYears : IComparer
{
int IComparer.Compare(Object x, Object y)
{
Cars X = (Cars)x, Y = (Cars)y;
return (X.Year.CompareTo(Y.Year));
}
}
public class SortByName : IComparer
{
int IComparer.Compare(Object x, object y)
{
Cars X = (Cars)x, Y = (Cars)y;
return (X.Name.CompareTo(Y.Name));
}
}
public class SortByManyfacturer : IComparer
{
int IComparer.Compare(object x, object y)
{
Cars X = (Cars)x, Y = (Cars)y;
return (X.Manufacturer.CompareTo(Y.Manufacturer));
}
}
}
Но если добавить еще один класс с различными свойствами, это будет бесполезно.
Итак, есть ли шанс изменить этот код, чтобы он работал для объектов с различными свойствами?
Я не уверен, что я понимаю ваш вопрос. Таким образом, вы можете использовать SortByName также для класса Cat, но не хотите его снова использовать для Cat, правильно? Вам нужен базовый класс для автомобилей и Cat, который содержит имя свойства, а затем измените Comparer на: –
общественного класса SortByName: IComparer { INT IComparer.Compare (Object х, объект у) { Base X = (Base) x, Y = (базовый) y; return (X.Name.CompareTo (Y.Name)); } } –
, то вы можете сравнить 2 кота по имени, 2 автомобиля по имени и кошку и автомобиль по имени. –