Я не нашел правильного решения для этого, поэтому я использовал два механизма для достижения аналогичного эффекта:
sed -i -e 's#https://storage[.]googleapis[.]com/workbox-cdn/releases/[0-9.]*/workbox-sw.js#/workbox/workbox-sw.js#g' build/service-worker.js
Первая часть решения немного уродливая, и я все равно был бы заинтересован в лучшем способе, но это лучший метод, который я мог бы найти, не выбрасывая CRA.
Из блога Paul Fox я рекомендую сообщение, "Как отсортировать IList": http://foxsys.blogspot.com/2007/06/how-to-sort-generic-ilist.html
На всякий случай тот блог уходит в будущем, я скопирую сообщение здесь:
Как отсортировать универсальный IList
Обновление
Можно читать и обновленное сообщение о сортировке универсального IList и Списка. Многие люди предпочтут методы, упомянутые в обновленном сообщении.
Сортировка универсального IList
Я пытался отсортировать универсальный IList <> и нашел довольно простой способ сделать его.
Шаг 1
Необходимо реализовать IComparable для типа, содержавшегося в IList. Для этого примера я собираюсь использовать простой Язык класс Dto.
public class LanguageDto : IComparable {
private String name;
public string Name { get { return name; } set { name = value; } }
public LanguageDto(string name) {
this.name = name;
}
#region IComparable Members
public int CompareTo(object obj) {
if (obj is LanguageDto) {
LanguageDto language = (LanguageDto)obj;
return this.name.CompareTo(language.name);
}
throw new ArgumentException(string.Format("Cannot compare a LanguageDto to an {0}", obj.GetType().ToString()));
}
#endregion
}
ШАГ 2
Отсортируйте свой IList. Чтобы сделать это, Вы будете использовать ArrayList. Адаптер () передача метода в Вашем IList и затем вызов Метода сортировки. Как так...
ArrayList.Adapter((IList)languages).Sort();
Примечание: языки имеют тип "IList"
Языки должны затем быть отсортированным списком Вашего типа!
Вы не можете бросить IList (T) к IList.
После некоторого сниффинга с Отражателем это походит на ArrayList. Адаптер (IList).Sort () сначала скопирует список в объектный массив, отсортирует массив и затем скопирует массив назад в список:
object[] array = new object[count];
this.CopyTo(index, array, 0, count);
Array.Sort(array, 0, count, comparer);
for (int i = 0; i < count; i++)
{
this._list[i + index] = array[i];
}
Вы могли бы получить упаковку наверху если T в Вашем Списке (T) тип значения.
Если необходимо изменить последовательность объектов в списке, который Вы имеете, можно сделать это так же:
IList<object> unsorted = ...
List<object> sorted = new List<object>(unsorted);
sorted.Sort();
for (int i = 0; i < unsorted.Countt; i++)
{
unsorted[i] = sorted[i];
}
Если список так огромен (как в сотнях миллиона объектов), что Вы не можете сделать дополнительную копию в памяти, я предлагаю использовать Список (T) во-первых или реализую Ваш любимый оперативный алгоритм сортировки.
Так как Метод сортировки не находится в интерфейсе IList, Вы могли бы рассмотреть создание Вашего собственного:
interface ISortableList<T> : IList<T>
{
void Sort();
void Sort(IComparer<T> comparer);
}
class SortableList<T> : List<T>, ISortableList<T> { }
/* usage */
void Example(ISortedList<T> list)
{
list.Sort();
list.Sort(new MyCustomerComparer());
}
В целом тип параметра, который Вы указываете в своем методе, должен быть наименьшим общим знаменателем участников, которых на самом деле необходимо позвонить. Если действительно необходимо назвать Вид () методом затем параметру нужно определить того участника. Иначе необходимо, вероятно, загрузить его в другой объект, который может сделать то, как что Вы хотите, такие:
void Example(IList<T> list)
{
list = new List<T>(list).Sort();
}
Это должно на самом деле быть довольно быстро, почти наверняка быстрее все еще, чем запись Вашего собственного встроенного алгоритма сортировки.
Я знаю, что это не.NET 2.0, но я люблю LINQ так сильно и буду подтверждать его все шансы, которые я получаю :)
Простой вид:
var sortedProducts =
from p in products
orderby p.ProductName
select p;
ObjectDumper.Write(sortedProducts);
Вид несколькими условиями:
string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
var sortedDigits =
from d in digits
orderby d.Length, d
select d;
Оба примера от 101 Образца Linq