Просмотрел код, список будущих исправлений ниже. Замечания приветствуются
UPDATE: all fixed.
1. Memoize<T>
Надо бы сделать кодогенерацию + оставить только одну перегрузку с optional args.
См
гадлайны.
2. CollectionsExtensions. Вот тут не надо params?
public static void AddRange<T>([NotNull] this ICollection<T> source, [NotNull] T[] items)
3. EnumerableExtensions.Index() Идея ок, реализация хромает.
IndexedItem не реализует equals/gethashcode/equality operators.
Имя метода — может, что-то типа
items.Indexed() ?
4. QueryableExtensions — nameof вместо строк в перегрузках OrderBy()/...
5. Для позаимствованного кода ОБЯЗАТЕЛЕН коммент BASEDON: + url на исходники.
Как минимум для ObjectPools и для файлов в Targeting надо добавить.
6. InterlockedOperations — надо добавить generic update на базе CAS loop,
по аналогии с кодом, что
генерит компилятор для подписки событий.
7. Перенёc
в соседний топикАвтор: AndrewVK
Дата: 18.04.16
.
XNodeExtensions — Required/Optional переименовать в стандартные Get/TryGet/XxxOrDefault.
8. Fn<T> — Identity переименовать в стандартный Self.
В остальном приятно удивлён — код