References
Overview
Section titled “Overview”This section compiles reference materials that are helpful for learning the concepts covered in this tutorial.
C# Language and .NET Documentation
Section titled “C# Language and .NET Documentation”Generic Variance
Section titled “Generic Variance”- Covariance and Contravariance in Generics - Microsoft Learn
- Covariance and Contravariance (C# Programming Guide)
- out (generic modifier) - C# Reference
- in (generic modifier) - C# Reference
static abstract Members
Section titled “static abstract Members”- Static abstract members in interfaces - C# 11
- Tutorial: Explore static virtual members in interfaces
Record Types
Section titled “Record Types”Libraries
Section titled “Libraries”LanguageExt
Section titled “LanguageExt”A functional programming library for C#. It provides monadic types such as Fin<T>, Option<T>, Either<L, R>, and more.
Mediator
Section titled “Mediator”A high-performance .NET Mediator pattern library. It routes requests without reflection, based on Source Generators.
Functional Programming
Section titled “Functional Programming”Railway Oriented Programming
Section titled “Railway Oriented Programming”Functional C#
Section titled “Functional C#”Design Patterns
Section titled “Design Patterns”Mediator Pattern
Section titled “Mediator Pattern”CRTP (Curiously Recurring Template Pattern)
Section titled “CRTP (Curiously Recurring Template Pattern)”Functorium Source Files
Section titled “Functorium Source Files”The following is a list of key Functorium source files covered in this tutorial.
IFinResponse Interface Hierarchy
Section titled “IFinResponse Interface Hierarchy”| File | Description |
|---|---|
Src/Functorium/Applications/Usecases/IFinResponse.cs | Interface definitions (IFinResponse, IFinResponseFactory, etc.) |
Src/Functorium/Applications/Usecases/IFinResponse.Impl.cs | FinResponse<A> record (Succ/Fail, Match/Map/Bind) |
Src/Functorium/Applications/Usecases/IFinResponse.Factory.cs | FinResponse static factory class |
Src/Functorium/Applications/Usecases/IFinResponse.FinConversions.cs | Fin<A> → FinResponse<A> conversion extension methods |
Command/Query Interfaces
Section titled “Command/Query Interfaces”| File | Description |
|---|---|
Src/Functorium/Applications/Usecases/ICommandRequest.cs | ICommandRequest<TSuccess>, ICommandUsecase |
Src/Functorium/Applications/Usecases/IQueryRequest.cs | IQueryRequest<TSuccess>, IQueryUsecase |
Src/Functorium/Applications/Usecases/ICacheable.cs | ICacheable interface |
Pipeline Implementations
Section titled “Pipeline Implementations”All files are located in the Src/Functorium.Adapters/Observabilities/Pipelines/ directory.
| File | Description |
|---|---|
UsecasePipelineBase.cs | Common helper base class (CQRS type identification, handler name extraction) |
UsecaseMetricsPipeline.cs | Metrics Pipeline (Read + Create) |
UsecaseTracingPipeline.cs | Tracing Pipeline (Read + Create) |
UsecaseLoggingPipeline.cs | Logging Pipeline (Read + Create) |
UsecaseValidationPipeline.cs | Validation Pipeline (CreateFail) |
UsecaseCachingPipeline.cs | Caching Pipeline (Read + Create, Query only) |
UsecaseExceptionPipeline.cs | Exception Pipeline (CreateFail) |
UsecaseTransactionPipeline.cs | Transaction Pipeline (Read + Create, Command only) |
ICustomUsecasePipeline.cs | Custom Pipeline marker interface (for Scrutor auto-discovery) |
UsecaseMetricCustomPipelineBase.cs | Custom Metric Pipeline base class |
UsecaseTracingCustomPipelineBase.cs | Custom Tracing Pipeline base class |
IUsecaseCtxEnricher.cs | Log custom property Enricher interface |
Related Tutorials
Section titled “Related Tutorials”| Tutorial | Location | Description |
|---|---|---|
| Separating Commands and Queries with the CQRS Pattern | Docs.Site/src/content/docs/tutorials/cqrs-repository/ | From CQRS pattern basics to Usecase integration |