Migration .Net 8 et surprises
Bonjour,
Je suis actuellement en train de migrer des API REST de .Net 7 vers .Net 8, et j'en profite pour revoir un petit peu le code.
J'ai le code suivant qui fonctionne très bien mais qui génère un message me conseillant d'utiliser un constructeur primaire (IDE0290).
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| /// <summary>
/// Service de consultation des données de Popo
/// </summary>
[ApiVersion("2.0")]
public class PopoConsultationController : BaseController
{
#region constructor
public PopoConsultationController(IPopoConsultationService popoConsultationService
) : base()
{
_popoConsultationService = popoConsultationService;
}
#endregion constructor
#region Actions
/// <summary>
/// ViewPopo
/// </summary>
/// <remarks>
/// Cette méthode restitue les informations sur POPO.
/// </remarks>
/// <verb>Get</verb>
/// <url>https://entreprise.com/PopoConsultationWebService/ViewPopo</url>
/// <response code="200"><see cref="ViewPopoOutDto"/>
/// Informations relatives à Popo.
/// </response>
[HttpGet]
[ProducesResponseType(typeof(ViewPopoOutDto), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[MapToApiVersion("2.0")]
public async Task<IActionResult> ViewPopo)
{
return await InvokeAsync(_popoConsultationService.ViewPopoAsync);
}
#endregion Actions
#region Private
private readonly IPopoConsultationService _popoConsultationService;
#endregion Private
} |
Dans le XML de documentation cela me génère, entre autre le membre suivant, ce qui est tout à fait normal :
Code:
1 2 3 4 5
| <member name="T:Entreprise.Controllers.V2.PopoConsultationController">
<summary>
Service de consultation des données de Popo.
</summary>
</member> |
Visual Studio me suggère de transformer mon code en ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| /// <summary>
/// Service de consultation des données de Popo.
/// </summary>
[ApiVersion("2.0")]
public class PopoConsultationController(IPopoConsultationService PopoConsultationService
) : BaseController()
{
#region constructor
#endregion constructor
#region Actions
/// <summary>
/// ViewPopo
/// </summary>
/// <remarks>
/// Cette méthode restitue les informations sur POPO.
/// </remarks>
/// <verb>Get</verb>
/// <url>https://entreprise.com/PopoConsultationWebService/ViewPopo</url>
/// <response code="200"><see cref="ViewPopoOutDto"/>
/// Informations relatives à Popo.
/// </response>
[HttpGet]
[ProducesResponseType(typeof(ViewPopoOutDto), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[MapToApiVersion("2.0")]
public async Task<IActionResult> ViewPopo()
{
return await InvokeAsync(_PopoConsultationService.ViewPopoAsync);
}
#endregion Actions
#region Private
private readonly IPopoConsultationService _PopoConsultationService = PopoConsultationService;
#endregion Private
} |
La suggestion IDE0290 disparait mais cela génère du contenu supplémentaire dans le XML de documentation.
Code:
1 2 3 4 5 6 7 8 9 10
| <member name="T:Entreprise.Controllers.V2.PopoConsultationController">
<summary>
Service de consultation des données de Popo.
</summary>
</member>
<member name="M:Entreprise.Controllers.V2.PopoConsultationController.#ctor(Entreprise.PopoSrv.IPopoConsultationService)">
<summary>
Service de consultation des données de Popo.
</summary>
</member> |
Existe-t-il un moyen d'utiliser le constructeur primaire sans impacter le XML de documentation ?
Merci.