Я столкнулся с некоторой загадкой, и я не мог описать то, что имею в виду, задавая вопросы о google и StackOverflow, поэтому, пожалуйста, простите меня, если заголовок запутан!Универсальная привязка свойств для сортировки объектов
Итак, моя идея состоит в том, чтобы иметь класс под названием «Сортировка», который содержит несколько различных алгоритмов сортировки в виде методов ... Я разработал способ сортировки значений на основе того, являются ли они строками, int, double, и т. д., не переписывая новые типы для каждого, но я изо всех сил стараюсь выполнить сортировку, потому что:
Список объектов, которые я хочу сортировать, с именем «Stock» содержит ALOT различных свойств, которые программа должна быть способный сортировать такие данные, как дата, день и т. д. То, к чему я стремлюсь, - это не переписывать сортировки для каждого из свойств, а вместо этого указывать свойство Sort, которое нужно посмотреть для каждого объекта в списке ... Если это имеет смысл?
Heres мою идею «псевдо»:
Stock[] stocksList;
Sort sort = new Sort();
stocksList = sort.Sort(sort.SortType.Bubble, stocksList, property);
Где SortType.Bubble это значение перечислителя, чтобы определить тип рода для выполнения, а свойство является имя свойства для использования в каждом элементе stocksList ...
Тогда внутри метода «sort.Sort», я хочу, чтобы иметь возможность сказать:
for (int i = 0; i < stocksList.Length; i++)
{
if (stocksList[i].property > stocksList[i + 1].property);
{
// Swap stocksList objects.
}
}
Из того, что я знаю, это не возможно, но я надеюсь, кто-то может доказать, что я неправ?
Спасибо, Лиам
EDIT: Я знаю, что можно просто передать как массив свойств для анализа, а также список объектов ... Но это означало бы, поменяв значения в обоих массивах для каждый из которых будет в основном снизить эффективность алгоритмов.
Настоятельно необходимо, чтобы я не использовал встроенные сортировки, так как это относится к назначению алгоритмов и сложностей, которое требует, чтобы я сам записывал сортировки ... –
Затем используйте те же концепции, чтобы получить гибкую обработку свойств, и Icomparer как механизм для гибких сравнений. Затем просто выполните сам сортировку. – Tim
Вам необходимо изменить свои объекты для реализации IComparable: https://msdn.microsoft.com/en-us/library/4d7sx9hd%28v=vs.110%29.aspx –