TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.76K subscribers
Post #1461 1.76K
День 1185. #ЧтоНовенького
Превью Обновлений
ASP.NET Core в .NET 7
Вышло уже 3 превью новинок в ASP.NET Core в новой версии .NET 7, которая должна выйти в ноябре. Вот самое интересное, на мой взгляд.

1. Внедрение сервисов в методах контроллера
Теперь не обязательно использовать атрибут [FromServices], сервис будет подставляться автоматически:
public class MyController : ControllerBase
{
public ActionResult Get(MyService service) => Ok();
}
Это можно отключить в настройках:
Services.Configure<ApiBehaviorOptions>(opt =>
{
opt.DisableImplicitFromServicesParameters = true;
})

2. Описания конечных точек
В минимальных API теперь можно добавить аннотации для спецификаций OpenAPI. Либо через методы расширения:
app.MapGet("/hello", () => ...)
.WithDescription("Hello request");

Либо через атрибуты:
app.MapGet("/hello", [EndpointSummary("Hello request")]() => ...);

3. Привязка массивов и StringValues
Теперь можно выполнять связывание из заголовков HTTPS и строки запроса в массивы примитивных типов, строк или в StringValues:
// GET /tags?q=1&q=2
app.MapGet("/tags", (int[] q) => $"1:{q[0]}, 2:{q[1]}");

// GET /tags?names=john&names=jack
app.MapGet("/tags", (string[] names) => $"1:{names[0]}, 2:{names[1]}");

app.MapGet("/tags", (StringValues names) => $"1:{names[0]}, 2:{names[1]} ");

4. Фильтры обработчиков маршрутов
Фильтры выполняются перед основной логикой обработчика маршрута и могут использоваться для проверки и изменения параметров обработчика или перехвата выполнения обработчика.
app.MapGet("/hello/{name}", HelloName)
.AddFilter(async (сontext, next) =>
{
return await next(сontext);
});
Это похоже на фильтры промежуточного ПО. Но теперь их можно «навесить» на отдельные конечные точки.
Подробнее про них рассказывает Ник Чапсас https://youtu.be/Kt9TiXrwIp4

5. Привязка с использованием TryParse
Теперь вы можете привязывать значения параметров действия контроллера с помощью метода TryParse. В примере ниже контроллер привязывает данные из строки запроса с помощью метода TryParse в типе параметра:
public class TryParseController : ControllerBase
{
// GET /tryparse?data=MyName
[HttpGet]
public ActionResult Get([FromQuery]CustomParse data)
{
…
}

public class CustomParse
{
public string? Name { get; set; }

public static bool TryParse(string s, out CustomParse result)
{
if (s is null)
{
result = default;
return false;
}

result = new CustomParse { Name = s };
return true;
}
}
}

Источники:
-
https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-7-preview-2/
-
https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-7-preview-3/
  • 👍 2
More from @netdeveloperdiary
  1. Oct 14, 2026Post #3373
  2. Oct 13, 2026День 2813. #ЗаметкиНаПолях #Async Ещё Раз Про Async/Await в C#. Часть 1 Почему существует…
  3. Oct 12, 2026День 2812. #Карьера #AI Как Разработчикам Оставаться Полезными, Когда Код Пишет ИИ? По мер…
  4. Oct 11, 2026День 2811. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
  5. Oct 10, 2026День 2810. #ЧтоНовенького #VSCode Более Быстрый и Лёгкий C# Dev Kit Мы, разработчики, люби…
  6. Oct 9, 2026День 2809. #Карьера 5 Навыков, Которые Помогут Быстрее Стать Сеньором. Окончание Начало 3.…
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 →