Comments (1)
A single method called ToActionResult could have been created that returned an ActionResult, however, this would allow the consumer to do something like this:
[Route("api/[controller]")]
public class UserController
{
private readonly UserService _userService;
public UserController(UserService userService) => _userService = userService;
[HttpGet("{id}")]
public ActionResult<int> Get(string id)
{
Result<User> result = _userService.GetById(id);
ActionResult actionResult = result.ToActionResult();
return actionResult;
}
}
We do assume that ToActionResult returns an ActionResult, so the consumer can add any type of return value in the controller action and the compiler will not generate any compiler error. This happens because there is an implicit conversion from ActionResult to ActionResult{TValue}.
Therefore, it has been decided to create different ToActionResult methods that returns ActionResult{TValue} to obtain more help from the compiler.
For example,
[Route("api/[controller]")]
public class UserController
{
private readonly UserService _userService;
public UserController(UserService userService) => _userService = userService;
[HttpGet("{id}")]
public ActionResult<Result<User>> Get(string id)
{
Result<User> result = _userService.GetById(id);
ActionResult<Result<User>> actionResult = result.ToActionResult();
return actionResult;
}
}
In that case, changing the return value type to ActionResult<int>
should generate a compilation error.
from simpleresults.
Related Issues (20)
- Add overloading methods with a single parameter of type `IEnumerable` to `Result` type
- Add an action filter to translate the `Result` object to `ActionResult`
- Add methods to execute explicit conversions
- Add .NET 8 support for the SimpleResults.AspNetCore project
- Add support for Fluent Validation
- Indicate which properties of the Result object do not return null
- Translate from Result object to an implementation of IResult
- Add implicit conversion from value to `Result<T>`
- Add implicit conversion from `Result<T>` to value
- Add an endpoint filter to translate the Result object to IResult
- Allow endpoint filter to be used in controller actions HOT 2
- Change error message format when validation fails from Fluent Validation
- Add extension methods to the ModelStateDictionary type
- Why are exceptions used for unexpected errors or exceptional situations? HOT 1
- Add a result operation to represent the file contents
- Overload to allow Exceptions HOT 9
- Why not use `ref struct` to represent the results? HOT 1
- Incorrect status is obtained when deserializing the result object
- Add sample about native AOT
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from simpleresults.