Добавлены API:
JsonObject.ClearFluent
;ToJsonObject
и ToObjectArray
; разделены перегрузки ToJson
с дефолтными параметрами;SetFluent(index, T)
;Улучшено:
JSON сериализация (ToJson()
, ToJsonFast()
)
Исправлено:
ExpressionHelper.Reduce
DotNetCommon.Core
Исправлено: string.ToObject(), когда string равно null, возвращается null при условии что default(T) равно null, в противном случае возникает ошибка;
DotNetCommon
Обновлены ссылки на DotNetCommon.Core и другие пакеты
Переопределение метода ExpressionHelper.ReduceLambda:
Expression ReduceLambda
=>
(Expression exp, Dictionary<ParameterExpression, object> midValues) ReduceLambda(...)
exp
теперь вместо промежуточных значений, представленных как константы, используются параметры.ExpressionHelper.GetInitOrReturnPropNames добавляет ограничение, запрещающее получение имен свойств через многоуровневый MemberAccess.
ExpressionHelper.Reduce(exp, isKeepCallback)
Метод ExpressionHelper.ReduceLambda получил новый параметр isKeep, который позволяет сохранять некоторые узлы при упрощении, например, new {...}.
Исправление ошибки:
1. Обработка ситуации в методе DeepClone() при использовании ValueTuple(...), когда количество элементов превышает семь.
v4.0.1
внесённые изменения: из DotNetCommon.Core удалена зависимость от Newtonsoft.Json; после удаления DotNetCommon.Core больше не зависит ни от каких сторонних пакетов. Возможные затронутые функции:
Оптимизация: удаление class
, new()
и ограничений generics в классе MapperAsync
Изменение типа возврата: IEnumerable
на List
в методе Page.List
Оптимизация метода ExpressionHelper.ReduceLambda主要用于优化嵌套的lambda表达式。
Улучшить Result.Unwrap
Accessor.Build() добавляет кэш
Улучшение функциональности: Accessor теперь поддерживает доступ к полям, а не только к свойствам.
Расширение метода Object.Mapper():
В AccessorBuilder удален вызов Emit, заменен на использование компилированных выражений.
Из пакета DotNetCommon.Core удалены ссылки на Roslyn/Emit, связанные функции и код перемещены в пакет DotNetCommon.
Увеличена проверка строк с добавлением MustEndsWith и MustStartsWith.
ExpressionHelper:
DeepClone указывает конкретные типы информации для POCO, который не имеет конструктора без параметров.
фикс бага: расширение метода Type.IsNullable()
DeepClone: добавлена поддержка часто используемых типов, таких как Nullable, Vector2 и других.
Добавлена поддержка публичных экземплярных полей Pojo в DeepClone
Добавлен метод глубокого клонирования объекта: object.DeepClone()
Документация: https://gitee.com/jackletter/DotNetCommon/blob/master/docs/033_Объект(Pojo)_глубокое_клонирование.md
Примечание: В данном случае ссылка на документацию остаётся без изменения, так как она указывает на конкретный ресурс в системе управления версиями.
Предоставлен конструктор new ResultException(string message, int code)
, что позволяет бросать异常 throw new ResultException()
Исправлено:
Предоставлен конструктор `new ResultException(string message, int code)`, что позволяет бросать异常 `throw new ResultException()`
->
Предоставлен конструктор `new ResultException(string message, int code)`, что позволяет бросать异常 `throw new ResultException()`.
Фрагмент с异常 был переведён на русский язык, остальной текст оставлен без изменений.