Category: Object mapperPage 1 of 2
Here is how we organized the project: Figure 17.4: Solution Explorer view of the file organization In this project, we support request validation using FluentValidation, a third-party NuGet…
The following points are downsides that we can tame as upsides: A way to start refactoring that business logic would be to push the logic into the domain…
On the upside, we have the following: From my experience, features tend to start small and grow over time. The users often find out what they need while…
As you may have noticed in the code, I chose the same pattern to build the commands as I did with the CQS sample, so we have a…
In this section, we are exploring MediatR, an open-source mediator implementation.What is MediatR? Let’s start with its maker’s description from its GitHub repository, which brands it as this:…
If you need markers to inject some specific dependency in a particular class, you are most likely cheating the Inversion of Control principle. Instead, you should find a…
The CQS and CQRS patterns suggest dividing the operations of a program into commands and queries. A command mutates data, and a query fetches data. We can apply…
The test program setup is composed of the following: Once again, the names of the participants are randomly generated. The TestMessageWriter implementation is a little different and accumulates…
The ChatRoom class is slimmer than the User class. It allows participants to join and sends chat messages to registered participants. When joining a ChatRoom, it keeps a…
In the previous code sample, we named the classes after the Mediator pattern actors, as shown in Figure 14.7. While this example is very similar, it uses domain-specific…