-
Notifications
You must be signed in to change notification settings - Fork 91
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
Conversation
IAuthorizationService authorizationService, | ||
HttpContext httpContext, | ||
IPaymentService paymentService | ||
[FromRoute] string? shoppingCartId, |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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
}
There was a problem hiding this comment.
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; }
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
OFFI-99