Библиотека шарписта | C#, F#, .NET, ASP.NET
23K subscribers
2.23K photos
32 videos
85 files
4.39K links
Все самое полезное для C#-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/b60af5a4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
Пополняем коллекцию мемов про #dotnet #maui
😁19🎉11👏4😢1
🔥 В ASP NET Core 8 появился IExceptionHandler

Проблема заключалась в том, что обработчик исключений по умолчанию всегда устанавливал HTTP-код состояния ответа равным 500.

В ASP NET Core 9 представлена ​​новая опция StatusCodeSelector, которая позволяет выбирать код состояния на основе исключения.

👉 Подробнее

#dotnet #csharp #tip by Oleg Kyrylchuk
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍122🌚1
👩‍💻 Совместное использование настроек сборки в нескольких .NET-проектах: на заметку C#-разработчику

#dotnet #csharp #tip by Dave Callan
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🥳 Новый формат .NET-решения .slnx теперь доступен в последней превью-версии Rider

Этот формат находится в режиме превью в Visual Studio, а теперь еще и в Rider. Кажется, с новым форматом улучшена читаемость и возможность слияния (mergeability). Выше — пример различий по сравнению с существующим форматом для простого решения.

#dotnet #csharp #tip by Dave Callan
🎉46👍12🔥41🤔1
🤔FluentValidation: прекратите проверять правила при первой ошибке

По умолчанию он проверяет все правила и объединяет сообщения об ошибках. Более эффективно устанавливать CascadeMode либо на уровне класса, либо на уровне цепочки правил, особенно при использовании MustAsync и асинхронных операций.

#dotnet #csharp #tip by Saeed Esmaeelinejad
Please open Telegram to view this post
VIEW IN TELEGRAM
18👍11🤔1👾1
🤔 Как можно аннотировать основной конструктор атрибутом?

Ранее, если у записи/класса/структуры было несколько конструкторов, возникала проблема с десериализацией, так как необходимо было указать атрибут JsonConstructor в основном конструкторе.

Начиная с C# 12, можно использовать method attribute target для указания конструктора☝️

#dotnet #csharp #tip by Oleg Kyrylchuk
👍10🥰2
🔒🔥 В .NET 9 появится новый тип Lock()

Отличный вариант для выделенного типа lock, поскольку это дает нам способ более четко выразить намерение нашего кода.

#dotnet #tip by Steven Giesel
👍50🥱161🔥1
💡 Parameter Object Pattern

Если метод принимает много связанных параметров, рассмотрите возможность группировки их в объект, чтобы упростить модификацию и сигнатуры.

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

#dotnet #csharp #tip by Dave Callan
😁23👍12🥱8👾3
🤔 Согласитесь, что глубоко вложенный код трудно читать?

В методах с большим количеством вложений можно использовать подход Early Return и Guard Clause, чтобы сделать код более удобным для чтения.

#dotnet #csharp #tip by Dave Callan
👍44🥱35💯7🌚2
👆 Кстати, в EF 9 представлен новый удобный способ заполнения базы данных начальными данными.

#efcore #dotnet #tip by Nabi Karampour
👏39👍10🔥6🥰3
💡 BenchmarkDotNet в действии: простой пример для C#-разработчика

#dotnet #tip by Dave Callan
👍323🔥2🥱2
💡 Кстати, ExecuteUpdate поддерживает обновление complex типов в Entity Framework 9

Раньше приходилось перечислять каждый элемент complex типа в ExecuteUpdate, а теперь он принимает complex тип, но вам все равно нужно указать каждый элемент.

#dotnet #efcore #tip by Oleg Kyrylchuk
🔥18🤔1
🚀 Сравнение производительности конкатенации строк в .NET 9

Есть и другие подходы, когда нам нужна ещё более высокая производительность, но из распространённых подходов, показанных ниже, StringJoin выигрывает.

#dotnet #csharp #tip by Dave Callan
👍25👏3👾2