1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/jamesfancy-Viyi.Util

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Viyi.Util — набор инструментов для .NET

Viyi.Util версии 2 был полностью переписан и не полностью совместим с версией 1.

Версия 2, опираясь на опыт других современных высокоуровневых языков, библиотек и повседневных сценариев использования, предоставляет ряд распространённых функций инструментов и классов инструментов, используя «расширенные функции» C# в качестве основной формы реализации, а также включает некоторые статические классы Helper и другие инструменты.

Другие связанные библиотеки

Viyi.Util содержит большое количество контента и зависимостей, некоторые функции были выделены в отдельные небольшие библиотеки:

  • Viyi.Strings фокусируется на расширении функциональности строк и инструментов;
  • Viyi.Bytes (скоро появится) фокусируется на расширении двоичных функций и инструментов.

Получение

Viyi.Util доступен через NuGet.

Чтобы получить его, выполните следующую команду в консоли диспетчера пакетов Visual Studio:

PM> Install-Package Viyi.Util

Или установите его через диалог управления пакетами NuGet.

Основные функции (Features)

  • Расширение object:

    • по аналогии с Kotlin предоставляются .Also() и .Let(), поддерживаются их асинхронные версии;
    • предоставляются методы ToXxxx() и ConvertTo(), которые являются обёрткой без исключений для соответствующих функций System.Convert;
    • предоставляется метод As(), который решает проблему невозможности применения ключевого слова as к типам структур (struct);
  • Расширение Linq (Enumerable):

    • предоставляются расширения ForEach() / ForEachAsync;

      Примечание: Viyi.Util в настоящее время не поддерживает IAsyncEnumerable, рекомендуется использовать System.Linq.Async.

    • предлагаются AsToArray() и AsToList(), сначала пытаясь применить as, чтобы максимально избежать повторного создания массивов или объектов списка;
    • для фреймворков .NET6 и ниже предоставляются MaxBy() и MinBy();
    • для List<T> и T[] соответственно предоставляются расширения Shuffle(), используемые для перемешивания внутренних элементов;
    • ViyiEnumerable<T>.Of(params T[]) создаёт IEnumerable<T> из группы отдельных объектов;
  • Расширение boolean:

    • it.Then(), форма выражения if / if ... else ...;
    • it.Else(), форма выражения if not;
    • it.Then(fnThen, fnElse), форма вызова функции ? :;
  • ViyiRandom предоставляет инструменты для генерации случайных чисел:

    • ViyiRandom.Create() создаёт генератор случайных данных (Random); В netstandard2.1 и net6 используется Random.Shared для генерации случайного семени, в netstandard2.0 используется аналогичный способ, создавая статический и потокобезопасный объект Random для генерации случайного семени.
    • ViyiRandom.RandomIndexes() генерирует набор случайных индексов, начинающихся с 0, которые можно использовать для создания случайных данных в определённом порядке;
  • EnumHelper предоставляет инструменты для работы с перечислениями:

    • EnumHelper.EnumerateWith() преобразует значения перечислений в указанный тип объекта IEnumerable;
    • EnumHelper.GetDescription() получает описание атрибута [DescriptionAttribute][description_attribute] для значений перечислений;
    • EnumHelper.EnumerateWithDescription() аналогично EnumerateWith(), но анализирует атрибут [DescriptionAttribute][description_attribute], результаты сохраняются в объекте EnumEntry;
    • EnumHelper.Enumerate() возвращает IEnumerable<KeyValuePair>;
    • EnumHelper.ToNameValueCollection() возвращает NameValueCollection (можно поменять местами ключ и значение);
  • Поддержка сравнения и равенства:

    • LambdaCompare позволяет создавать объекты IComparer<T> с помощью Lambda, избегая определения класса;
    • LambdaEqualityComparer позволяет создавать объекты IEqualityComparer<T> с помощью Lambda, избегая определения класса;
  • Другие инструменты: Будут проанализированы, подтверждены и реализованы в соответствии с Issue.

Целевые платформы

  • .NET6

  • .NET Standard 2.1

    Поддерживает:

    • .NET 6.0/5.0
    • .NET Core 3.1/3.0
  • .NET Standard 2.0

    Поддерживает:

    • .NET 6.0/5.0
    • .NET Core 3.1/3.0/2.2/2.1/2.0
    • .NET Framework 4.8/4.7.x/4.7/4.6.2

Документация

Предоставляется документация Xml (Viyi.Util.xml) вместе с пакетом NuGet.

Специализированная документация API не создавалась, но исходный код содержит документацию.

WIKI содержит пояснения к некоторым функциям.

Лицензия

Лицензия MulanPSL2 (MulanPSL2)

Примечание:

В Viyi.Util v1.x использовалась лицензия MIT, начиная с версии v2.0, она была изменена на MulanPSL2.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
C#
MulanPSL-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/jamesfancy-Viyi.Util.git
git@api.gitlife.ru:oschina-mirror/jamesfancy-Viyi.Util.git
oschina-mirror
jamesfancy-Viyi.Util
jamesfancy-Viyi.Util
main