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

OSCHINA-MIRROR/yks-Newbe.ObjectVisitor

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_zh_Hans.md 5.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 21:26 f85d4d9

Текст:

Привет, дорогой партнёр! Я очень рад, что вы обратили внимание на этот репозиторий и предприняли некоторые попытки.

Этот репозиторий всё ещё находится на очень ранней стадии разработки. После тщательного трёхсекундного размышления я решил заархивировать этот репозиторий, главным образом потому, что не было слишком много событий по его поддержке. В дальнейшем я планирую превратить опыт написания кода для этого репозитория в несколько простых видео или статей. Ещё раз благодарю вас за внимание.

Кроме того, я предлагаю вам, если у вас всё ещё есть подобные потребности, обратить внимание на следующие проекты или документы:

  • Source Generators;
  • Natasha Leo.

Newbe.ObjectVisitor

  • 简体中文 (README_zh_Hans.md);
  • English (README.md).

Newbe.ObjectVisitor помогает разработчикам получать доступ ко всем свойствам обычного класса самым простым и эффективным способом. Это позволяет выполнять такие операции, как проверка, сопоставление, сбор и т. д.

Например, в вашем коде есть такой простой класс:

var order = new OrderInfo();

Если вы хотите распечатать все свойства и значения этого класса, вы можете использовать отражение:

for(var pInfo in typeof(OrderInfo).GetProperties())
{
    Console.Writeline($"{pInfo.Name}: {pInfo.GetValue(order)}");
}

Используя эту библиотеку классов, вы можете добиться такого же эффекта следующим образом:

// Вызов метода расширения .V
// Создаёт visitor для типа Order
var visitor = order.V();

visitor.ForEach(context=>{
    var name = context.Name;
    var value = context.Value;
    Console.Writeline($"{name}: {value}");
}).Run();

// Можно записать код в одну строку
order.V().ForEach(c=> Console.Writeline($"{c.Name}: {c.Value}")).Run();

// Или можно вызвать этот более короткий метод
order.FormatToString();

Зачем это делать?

  • Потому что это быстрее! Эта библиотека классов использует деревья выражений для реализации, поэтому она работает примерно в 10 раз быстрее, чем прямое использование отражения.
  • Потому что так легче читать! Используя эту библиотеку, вы можете создавать делегаты с помощью цепочечного API и именованных методов, чтобы сделать ваш код таким же читаемым, как и при жёстком кодировании.
  • Потому что она более расширяема! Если вы используете эту библиотеку, у вас есть простой способ доступа ко всем свойствам класса. Таким образом, вы сможете делать множество вещей, которые вы хотели бы сделать, например, создать валидатор для проверки вашей модели, изменить некоторые свойства, которые могут содержать конфиденциальные данные, чтобы избежать вывода в журнал, создать объектный сопоставитель, похожий на AutoMapper, но с лучшей производительностью и т. п.

API

Пожалуйста, обратитесь к следующим веб-сайтам за документацией по этой библиотеке:

Пакеты

Пакет Версия Скачать Описание
Newbe.ObjectVisitor Newbe.ObjectVisitor.Version Newbe.ObjectVisitor.Download Основная информация о Newbe.ObjectVisitor

Контакты

QQ-группа: Newbe.Claptrap CL4P-TP 610394020: https://jq.qq.com/?_wv=1027&k=Lkhbwj0o.

Количество звёзд с течением времени

Количество звёзд с течением времени.

Опубликовать ( 0 )

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

1
https://api.gitlife.ru/oschina-mirror/yks-Newbe.ObjectVisitor.git
git@api.gitlife.ru:oschina-mirror/yks-Newbe.ObjectVisitor.git
oschina-mirror
yks-Newbe.ObjectVisitor
yks-Newbe.ObjectVisitor
main