Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

OFFI-99: Inferred parameters are not always recognized correctly causing exceptions #485

Merged
merged 1 commit into from
Aug 29, 2024

Conversation

wAsnk
Copy link
Contributor

@wAsnk wAsnk commented Aug 23, 2024

IAuthorizationService authorizationService,
HttpContext httpContext,
IPaymentService paymentService
[FromRoute] string? shoppingCartId,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not use them as properties decorated with FromRoute, FromService instead of injecting them within the constructor?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a static class. How would that work?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can use it like this

[HttpGet("api/products/{id}")]
public IActionResult GetProduct([FromRoute] int id)
{
    // id will be populated with the value from the route
}

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I remember I used [FromRoute] in the RazorPage model property

[FromRoute("id")]
public string Id { get; set; }

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you tell me why this is a better approach? What's the benefit? @hishamco

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Much cleaner and no need to use constructor injection

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, I understand that it would be better, but how would you do it within this static minimal API class? We don't want much refactoring.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this could only be done by turning this from a minimal API endpoint class into an API controller? But as I recall OC is moving the other direction (away from API controllers) for performance reasons.

@sarahelsaig sarahelsaig merged commit 3eb9a9f into main Aug 29, 2024
9 checks passed
@hishamco hishamco deleted the issue/OFFI-99 branch August 29, 2024 17:47
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants