Skip to content

References

This section compiles reference materials that are helpful for learning the concepts covered in this tutorial.



A functional programming library for C#. It provides monadic types such as Fin<T>, Option<T>, Either<L, R>, and more.

A high-performance .NET Mediator pattern library. It routes requests without reflection, based on Source Generators.



CRTP (Curiously Recurring Template Pattern)

Section titled “CRTP (Curiously Recurring Template Pattern)”

The following is a list of key Functorium source files covered in this tutorial.

FileDescription
Src/Functorium/Applications/Usecases/IFinResponse.csInterface definitions (IFinResponse, IFinResponseFactory, etc.)
Src/Functorium/Applications/Usecases/IFinResponse.Impl.csFinResponse<A> record (Succ/Fail, Match/Map/Bind)
Src/Functorium/Applications/Usecases/IFinResponse.Factory.csFinResponse static factory class
Src/Functorium/Applications/Usecases/IFinResponse.FinConversions.csFin<A> → FinResponse<A> conversion extension methods
FileDescription
Src/Functorium/Applications/Usecases/ICommandRequest.csICommandRequest<TSuccess>, ICommandUsecase
Src/Functorium/Applications/Usecases/IQueryRequest.csIQueryRequest<TSuccess>, IQueryUsecase
Src/Functorium/Applications/Usecases/ICacheable.csICacheable interface

All files are located in the Src/Functorium.Adapters/Observabilities/Pipelines/ directory.

FileDescription
UsecasePipelineBase.csCommon helper base class (CQRS type identification, handler name extraction)
UsecaseMetricsPipeline.csMetrics Pipeline (Read + Create)
UsecaseTracingPipeline.csTracing Pipeline (Read + Create)
UsecaseLoggingPipeline.csLogging Pipeline (Read + Create)
UsecaseValidationPipeline.csValidation Pipeline (CreateFail)
UsecaseCachingPipeline.csCaching Pipeline (Read + Create, Query only)
UsecaseExceptionPipeline.csException Pipeline (CreateFail)
UsecaseTransactionPipeline.csTransaction Pipeline (Read + Create, Command only)
ICustomUsecasePipeline.csCustom Pipeline marker interface (for Scrutor auto-discovery)
UsecaseMetricCustomPipelineBase.csCustom Metric Pipeline base class
UsecaseTracingCustomPipelineBase.csCustom Tracing Pipeline base class
IUsecaseCtxEnricher.csLog custom property Enricher interface

TutorialLocationDescription
Separating Commands and Queries with the CQRS PatternDocs.Site/src/content/docs/tutorials/cqrs-repository/From CQRS pattern basics to Usecase integration