A
Alexitarea | Dev Blog
@alexitarea2 подп.
15просмотров
9 декабря 2025 г.
provocationScore: 17
Потенциальная проблема первичных конструкторов Первичные конструкторы - фича, представленная в C# 12, представляющая синтаксический сахар для обычного конструктора, в который можно передать параметры и они будут доступны в любом блоке объявленного типа. Конструктор с параметрами firstName и lastName выглядит вот так: public class Person(string firstName, string lastName) { public override string ToString() => $"Firstname - {firstName}, Lastname - {lastName}"; } Ожидаемый результат - получить примерно вот такое поведение как у record типа, а именно неизменяемые члены класса { get; init; } public record Person(string FirstName, string LastName); Но увы, параметры конструктора это просто параметры, их значения не хранятся и они не являются членами класса. И в чём тогда проблема ? В том, что параметры, передаваемые в конструктор, доступны для изменения и им можно присваивать значения. В самом частом кейсе использования первичных конструкторов - внедрении зависимостей, это становится проблемой, особенно когда в команде есть новые разработчики, которые случайно могут сломать всё что угодно. Решения: Способ 1. Для того чтобы обезопасить себя, используйте приватную переменную для ICustomService. public class CustomController(ICustomService customService) : ControllerBase { private readonly ICustomService _customService = customService; } Способ 2. Договоритесь с командой о запрете на использование первичных конструкторов через .editorconfig (Данный способ, я уверен, вызовет бурные споры и обсуждения, без авторитета в команде его непросто будет продвинуть 😁): 1. Откройте или создайте файл .editorconfig в корне вашего проекта. 2. Добавьте следующую строку в файл, чтобы отключить правило или настроить его (установите severity = none для полного игнорирования или severity = error для принудительного использования классических конструкторов): .editorconfig # Включить правило, но помечать как ошибку dotnet_diagnostic.IDE0290.severity = error А какое у вас мнение по поводу первичных конструкторов? Пишите, будет интересно почитать
15
просмотров
2089
символов
Да
эмодзи
Нет
медиа

Другие посты @alexitarea

Все посты канала →
Потенциальная проблема первичных конструкторов Первичные кон — @alexitarea | PostSniper