Skip to content

Initial types and registration for Vertically library - #1

Merged
DarthPedro merged 10 commits into
mainfrom
features/initial-vsa-design
Aug 30, 2026
Merged

DarthPedro merged 10 commits into
mainfrom
features/initial-vsa-design

Conversation

@DarthPedro

Copy link
Copy Markdown
Contributor

Introduces D20Tek.Vertically, a UI-framework-agnostic library of contracts and helpers for building vertical slice architecture across Blazor, Web API, CLI, and future WPF/Avalonia apps. Multi-targets .NET 9 and .NET 10.

Core contracts
• Requests/handlers: ICommand, IQuery, ICommandHandler<,>, IQueryHandler<,>; all result-typed via D20Tek.Functional.Result.
• Validation: synchronous IValidator and a dedicated asynchronous IAsyncValidator; both discovered and composable (multiple validators per request).
• Optional feature discovery: IFeature for self-registering slices.

Pipeline & behaviors
• Decorator-based IPipelineBehavior<,> with RequestHandlerDelegate and an IScopedBehavior lifetime marker.
• Built-in behaviors: Logging, Timing, ExceptionToResult, Validation (sync + async), with safe null-logger handling.
• Global and per-handler behavior placement (AtOutermost, InsertBefore) via fluent builders.

Registration
• Single branded entry point AddVertically, placed in the Microsoft.Extensions.DependencyInjection namespace for zero-friction discoverability.
• Fluent grouped builders for handlers, validators, and behaviors; explicit registration plus feature-first assembly scanning with dedupe/conflict handling.
• Implementation types kept internal; BehaviorRegistry extracted from VerticallyBuilder for cohesion (both under the 100-line guideline).

Tests
• 80 passing MSTest tests (net10.0) with AAA labeling and exhaustive branch coverage.

Changed the IQuery and IHandler definitions to include TResult.
Fixed up handler interfaces to match.
Implemented full registration and assembly scanning handlers, validators, and behaviors.
Added decorator handler to chain decorators as needed.
…cement overrides).

Implemented built-in behaviors: Logging, Timing, ExceptionToResult, Validation.
Added unit test to cover the most cases in the Vertically library.
Added IAsyncValidator<T> interface to support async validators that need it.
Updated registration to support IAsyncValidator.
Updated ValidationBehavior to support IAsyncValidator in addition to IValidator.
Updated unit tests.
@DarthPedro DarthPedro changed the title Features/initial vsa design Initial types and registration for Vertically library Aug 30, 2026
@DarthPedro
DarthPedro merged commit 0729fa9 into main Aug 30, 2026
1 check passed
@DarthPedro
DarthPedro deleted the features/initial-vsa-design branch August 30, 2026 20:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant