TGViewer
StepOne | Степан Минин StepOne | Степан Минин @steponeit · 3.27K subscribers
Post #717 2.15K
StepOne | Степан Минин Учу инженеров OZON искусству ШарпиZма на E-Code 13-14 сентября снова рассказываю про крутые штуки, которые не могу внедрить из-за бюрократии и отсутствия власти https://ecode.ozon.tech/talks/b725f3db910e488191e79b9614d7d51f
Мне надо вам кое в чём признаться про validly

В своём докладе на Ozon E-Code я утверждал, что validly поддерживает внедрение сервисов из DI, и приводил примерно такой кусок кода:
[Validatable]
public partial record CreateObjectRequest
{
[CustomValidation]
public string? IntegrationField { get; set; }

public async IAsyncEnumerable<ValidationMessage> ValidateIntegrationField(
IExternalService externalService,
[EnumeratorCancellation] CancellationToken ct = default)
{
if (IntegrationField is null)
yield break;
var isValid = await externalService.IsValidValue(IntegrationField, ct);
if (!isValid)
yield return new ValidationMessage("Integration field is invalid", "External.Integration");
}
}

public interface IExternalService
{
Task<bool> IsValidValue(string integrationField, CancellationToken ct = default);
}


На самом деле это почти так. Генератор действительно понимает зависимости и пытается их достать через IServiceProvider. Но автор генерировал неправильный код из-за чего возникала ошибка сборки. А также пытался извлечь CancellationToken как сервис!

К счастью, исправления от меня уже в мастере, но релиз до сих пор затягивается. Так что ждём!
Пока можете посмотреть PR с исправлениями - https://github.com/Hookyns/validly/pull/13

Или присоединиться в закрытый канал ШарпиZм, оформив подписку по ссылке в закрепе ☝️
Там вас ждёт гайд по подготовке к новому режиму сборки мусора при переходе на .NET 9 и .NET 10
GitHub [bug] IServiceProvider does not contain a definition for GetRequiredService by Stepami · Pull Request #13 · Hookyns/validly Setup [Validatable] public partial record CreateObjectRequest { [CustomValidation] public string? IntegrationField { get; set; } public async IAsyncEnumerable<ValidationMessage> V...
  • ❤ 5
  • 👍 3
  • 🔥 2
  • 🤯 2
  • ❤‍🔥 1
More from @steponeit
  1. Sep 22, 2026Post #858
  2. Sep 21, 2026Post #857
  3. Sep 15, 2026Напомню, что у меня есть WireMock.Grpc.Protobuf — расширение для тех, кто пишет компонентн…
  4. Sep 12, 2026StepOne — официальный контрибутор FusionCache 🤙 Между набросами можно ещё и код писать Fu…
  5. Sep 11, 2026Стояк работодателей 2026 🤫 Оказывается, год назад я предсказал выход Астры! И вместе с эт…
  6. Sep 10, 2026Доставка - новое IT Мужчина на видео делится опытом заработка 350 000 ₽ за месяц без выход…
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 →