TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.77K subscribers
Post #1321 1.44K
День 1072. #NET6
Не Делайте Этого В .NET 6, Делайте Вот Так. Окончание
Начало

4. Не используйте костыли для обработки исключений в Blazor Server, используйте компонент ErrorBoundary
Что происходит при возникновении необработанного исключения в Blazor Server? Оно считается фатальным, поскольку «цепь остается в неопределённом состоянии, что может привести к проблемам со стабильностью или безопасностью в Blazor Server». В результате вам может потребоваться разбрасывать повсюду блоки try/catch в качестве превентивной меры или инкапсулировать логику в JavaScript, поскольку код C# после необработанного исключения не будет выполнен.

Не делайте так. Вместо этого используйте новый компонент ErrorBoundary. Это не глобальный обработчик исключений, но он поможет справиться с непредсказуемым поведением, особенно с компонентами, которые вы не контролируете.
<div class="main">
<div class="content px-4">
<ErrorBoundary>
@Body
</ErrorBoundary>
</div>
</div>
Конечно, можно не перехватывать все исключения:
<tbody>
@foreach (var emp in Employees)
{
<ErrorBoundary @key="@emp">
<ChildContent>
<tr>
<td>@emp.Id</td>
<td>@emp.FirstName</td>
<td>@emp.LastName</td>
</tr>
</ChildContent>
<ErrorContent>
Не удалось отобразить #@emp.Id.
</ErrorContent>
</ErrorBoundary>
}
</tbody>

5. Не используйте подробный логгинг в Server.Kestrel, используйте новые подкатегории
Если я хочу включить подробный логгинг для Kestrel, раньше нужно было использовать Microsoft.AspNetCore.Server.Kestrel. Это всё ещё существует, но есть и новые подкатегории, которые упрощают жизнь. В дополнение к Server.Kestrel теперь есть Kestrel.BadRequests, Kestrel.Connections, Kestrel.Http2 и Kestrel.Http3. Допустим, вы хотите регистрировать только неверные запросы:
{
"Logging": {
"LogLevel": {
"Microsoft.AspNetCore.Server.Kestrel": "Debug"
}
}
}

Не делайте так. Делайте вот так:
{
"Logging": {
"LogLevel": {
"Microsoft.AspNetCore.Server.Kestrel.BadRequests": "Debug"
}
}
}

6. Не теряйтесь в скобках, используйте пространства имён уровня файлов
В C# 10 представлены пространства имён уровня файлов. Вот обычное объявление класса в C# до версии 10:
namespace SuperheroApp.Models
{
public class Superhero
{
public string? FirstName { get; set; }
public string? LastName { get; set; }
}
}

Теперь можно убрать скобки в пространстве имён, а также получить все преимущества неизменяемости, использовав записи:
namespace SuperheroApp.Models;

public record Superhero(string? FirstName, string? LastName);

Кстати, о скобках. В C# 10 также введены новые шаблоны свойств. В выражении switch вместо
var tax = sales switch
{
{ Address: { State: "AZ" } } => 1.03M,
{ Address: { State: "FL" } } => 1.07M,
{ Address: { State: "CA" } } => 1.12M
_ => 0
};
можно использовать более ясный формат:
var tax = sales switch
{
{ Address.State: "AZ" } => 1.03M,
{ Address.State: "FL" } => 1.07M,
{ Address.State: "CA" } => 1.12M
_ => 0
};

Источник: https://www.daveabrock.com/2021/12/08/do-this-not-that-the-net-6-edition/
  • 👍 10
More from @netdeveloperdiary
  1. Oct 15, 2026Post #3374
  2. Oct 14, 2026Post #3373
  3. Oct 13, 2026День 2813. #ЗаметкиНаПолях #Async Ещё Раз Про Async/Await в C#. Часть 1 Почему существует…
  4. Oct 12, 2026День 2812. #Карьера #AI Как Разработчикам Оставаться Полезными, Когда Код Пишет ИИ? По мер…
  5. Oct 11, 2026День 2811. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
  6. Oct 10, 2026День 2810. #ЧтоНовенького #VSCode Более Быстрый и Лёгкий C# Dev Kit Мы, разработчики, люби…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →