Оптимизация RoslynHelper: создание CSharpCompilation каждый раз при компиляции приводит к быстрому увеличению использования памяти. Вместо этого следует использовать один общий CSharpCompilation. Также следует сделать RoslynHelper доступным для внешнего использования.
Модификация AsyncLocker
using await var locker = AsyncLocker.LockAsync("123");
Исправление ошибки: исправлено поведение ExpressionHelper.ReduceLambda при работе с nullable типами.
Добавлена производительность тестирование для ExpressionHelper.ReduceLambda: https://gitee.com/jackletter/DotNetCommon/blob/master/tests/DotNetCommon.ReduceLambdaPerformance/Program.cs
Изменения в разрыве:
Унифицированы правила проверки эффективности имени файла и пути к файлу:
1.1 Валидность имени файла проверяется с использованием 41 недопустимого символа Windows (непосредственно влияет метод: string.IsValidFileName("")
);
1.2 Валидность пути к файлу проверяется с использованием Yöntem: string.IsValidPathName("")
);
Удалена память кэша MemoryCache
, чтобы избежать конфликта названий с библиотекой Microsoft.Extensions.Caching.Memory
.
Новые возможности:
bool ignoreComment
в расширенный метод string.ToObject<T>
для указания, следует ли игнорировать комментарии при преобразовании строки в объект типа JObject
или JArray
.JSONHelper.Format
. Этот метод позволяет контролировать отступы (isIndent
) и удаление комментариев (removeComment
).ExpressionHelper
(см.: https://gitee.com/jackletter/DotNetCommon/blob/master/docs/032_表达式辅助类(ExpressionHelper).md):ExpressionHelper.GetAccessNames
: проходит по лямбда-выражению и собирает множество свойств, доступных к чтению;ExpressionHelper.GetInitOrReturnPropNames
: проходит по лямбда-выражению и собирает множество свойств, используемых для инициализации или возврата значений;ExpressionHelper.ReduceLambda
: упрощает лямбда-выражение.4. Улучшены компоненты журналирования (см.: https://gitee.com/jackletter/DotNetCommon/blob/master/docs/029_通用日志Logger.md):Обратите внимание, что фраза "https://gitee.com/jackletter/DotNetCommon/blob/master/docs/029_通用日志Logger.md" содержит текст на китайском языке, который можно перевести, но в данном случае лучше оставить её без изменений, чтобы ссылка оставалась действительной.5. Расширены возможности рефлексии для типов Type
и MethodInfo
(см.: https://gitee.com/jackletter/DotNetCommon/blob/master/docs/026_%D0%A1%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B0_%D1%80%D0%B0%D1%81%D0%B5%D1%84%D0%BB%D0%B5%D0%B9.md#8-%D1%82%D0%B8%D0%BF%D0%B0-%D0%B8-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B0-%D1%80%D0%B5%D1%84%D0%BB%D0%B5%D1%84%D1%81%D0%B8%D0%B8-%D1%80%D0%B0%D1%81%D1%82%D0%B5%D1%82%D0%B0):
5.1 Type.GetClassFullName
5.2 Type.GetClassGenericFullName
5.3 Method.GetMethodFullName
5.4 Method.GetMethodGenericFullName
Исправление ошибки: Enum.To()
Предварительный просмотр функциональности: упрощение лямбда-выражений, ExpressionHelper.ReduceLambda(...)
Примечание: В последнем пункте есть часть, которая остается без изменения ("1,2plok,4".SplitAndTrimTo()).
Исправление ошибки: Устранена проблема с дефолтной записью логов в локальный файл, которая занимала слишком много места.
Поддерживает .NET 6.0
DotNetCommon.Core => 1.1.4
DotNetCommon => 2.1.4
Исправлен баг в методе Object.ToWithDefault(), который приводил к бесконечной рекурсивной перезагрузке метода и падению программы!!!
Релиз DotNetCommon.Core v1.1.2
Обновлено скрытое преобразование для Result -> Result, добавлена конвертация Result.Data -> Result.T
Добавлены методы DateTime.ToFileNameString и DateTime.ToFileNameGuidString
Исправление ошибки в генерации распределённых последовательных номеров
Обновлены данные словаря для перевода китайских символов в пinyin; решены проблемы с конвертацией некоторых многозначных слов;
Пакет DotNetCommon.PinYin разделён; данные словаря загружены на NuGet;
регионы заменены на регион
Обновление DotNetCommon.Core до версии v1.1.0:
Добавлено расширение String.Repeat;
Улучшена работа с деревьями, добавлена возможность использования NextSibling;
В перечисления добавлен аннотация ReferenceClass, теперь они представляют собой четверки (code, key, desc, refer);
Переработана документация;
DotNetCommon обновляет ссылку на пакет DotNetCommon.Core
Из пакета DotNetCommon выделена часть DotNetCommon.Core для сокращения объёма.