С# 12, первичные конструкторы
В новой версии C# (v.12) есть первичные конструкторы, поэтому мы можем написать:
public interface IService
{
Distance GetDistance();
}
public class ExampleController(IService service) : ControllerBase
{
private readonly IService _service = service;
[HttpGet]
public ActionResult<Distance> Get()
{
return _service.GetDistance();
}
}
или даже это
public class ExampleController(IService service) : ControllerBase
{
[HttpGet]
public ActionResult<Distance> Get()
{
return service.GetDistance();
}
}
второй вариант еще более удобен в использовании (и короче). Но хороший ли это способ (вариант №1) или, возможно, лучше использовать вариант №1? Потому что теоретически мы можем изменитьservice
переменная с неожиданным поведением прямо в коде.