Reo.Core.BaseDomainModels.MediatR 8.0.538

There is a newer version of this package available.
See the version list below for details.
dotnet add package Reo.Core.BaseDomainModels.MediatR --version 8.0.538
                    
NuGet\Install-Package Reo.Core.BaseDomainModels.MediatR -Version 8.0.538
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Reo.Core.BaseDomainModels.MediatR" Version="8.0.538" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Reo.Core.BaseDomainModels.MediatR" Version="8.0.538" />
                    
Directory.Packages.props
<PackageReference Include="Reo.Core.BaseDomainModels.MediatR" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Reo.Core.BaseDomainModels.MediatR --version 8.0.538
                    
#r "nuget: Reo.Core.BaseDomainModels.MediatR, 8.0.538"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Reo.Core.BaseDomainModels.MediatR@8.0.538
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Reo.Core.BaseDomainModels.MediatR&version=8.0.538
                    
Install as a Cake Addin
#tool nuget:?package=Reo.Core.BaseDomainModels.MediatR&version=8.0.538
                    
Install as a Cake Tool

Reo.Core.BaseDomainModels.MediatR

Описание пакета

Пакет Reo.Core.BaseDomainModels.MediatR предоставляет набор базовых классов и интерфейсов для построения приложений на основе Domain-Driven Design (DDD) с интеграцией MediatR. Он решает задачи структурирования бизнес-логики, управления доменными событиями и командами, а также обеспечивает удобный способ взаимодействия с репозиториями.

Основные функции:

  • Поддержка доменных моделей (агрегатов) с идентификаторами.
  • Интеграция с MediatR для обработки команд и событий.
  • Абстракции для репозиториев (чтение и запись данных).
  • Упрощение реализации паттернов CQRS и Event Sourcing.

Основные компоненты

1. IReoAggregateRoot<TId>

Интерфейс для агрегатов доменной модели. Определяет обязательные свойства и методы, такие как Id и методы для обработки команд и событий.

2. IReoDomainCommand / IReoDomainCommandWithResult

Интерфейсы для команд, которые могут быть обработаны через MediatR. IReoDomainCommand используется для команд без возвращаемого значения, а IReoDomainCommandWithResult — для команд, возвращающих bool.

3. IReoDomainEvent

Интерфейс для доменных событий, реализующих INotification из MediatR. Используется для публикации событий после изменения состояния агрегата.

4. IReoDomainCommandsExecutor / IReoDomainEventsExecutor

Интерфейсы для исполнения команд и событий. Реализуются в базовых классах, таких как ReoAggregateRoot, и обеспечивают интеграцию с MediatR.

5. IReoDomainReadOnlyRepository<TAggregateRoot> / IReoDomainWriteOnlyRepository<TAggregateRoot>

Абстракции для репозиториев. Предоставляют методы для чтения и записи агрегатов в хранилище данных.

6. ReoAggregateRoot<TId>

Базовый класс для реализации агрегатов. Реализует IReoAggregateRoot<TId>, IReoDomainCommandsExecutor, IReoDomainEventsExecutor и предоставляет методы для добавления команд и событий.

Требования

Установка

NuGet Package Manager

Install-Package Reo.Core.BaseDomainModels.MediatR

.NET CLI

dotnet add package Reo.Core.BaseDomainModels.MediatR

Настройка

Регистрация в DI-контейнере (ASP.NET Core)

Добавьте сервисы в ConfigureServices в Startup.cs или Program.cs:

services.AddMediatR(cfg => {
    cfg.RegisterServicesFromAssembly(typeof(Startup).Assembly);
});

Пример регистрации репозиториев

services.AddScoped<IReoDomainReadOnlyRepository<MyAggregateRoot>, MyRepository>();
services.AddScoped<IReoDomainWriteOnlyRepository<MyAggregateRoot>, MyRepository>();

Использование

Пример 1: Создание агрегата и обработка команды

public class CreateOrderCommand : IReoDomainCommand
{
    public Guid CustomerId { get; set; }
    public List<OrderItem> Items { get; set; }
}

public class OrderAggregate : ReoAggregateRoot<Guid>
{
    public Guid CustomerId { get; private set; }
    public List<OrderItem> Items { get; private set; }

    public void Apply(CreateOrderCommand command)
    {
        CustomerId = command.CustomerId;
        Items = command.Items;
        AddDomainEvent(new OrderCreatedEvent { OrderId = Id });
    }
}

public class OrderCreatedEvent : IReoDomainEvent
{
    public Guid OrderId { get; set; }
}

Пример 2: Обработчик команды

public class CreateOrderCommandHandler : IRequestHandler<CreateOrderCommand>
{
    private readonly IReoDomainWriteOnlyRepository<OrderAggregate> _repository;

    public CreateOrderCommandHandler(IReoDomainWriteOnlyRepository<OrderAggregate> repository)
    {
        _repository = repository;
    }

    public async Task Handle(CreateOrderCommand command, CancellationToken token)
    {
        var aggregate = new OrderAggregate();
        aggregate.Apply(command);
        await _repository.SaveAsync(aggregate, token);
    }
}

Пример 3: Обработчик события

public class OrderCreatedEventHandler : INotificationHandler<OrderCreatedEvent>
{
    public async Task Handle(OrderCreatedEvent notification, CancellationToken token)
    {
        // Логика обработки события (например, отправка уведомления).
        Console.WriteLine($"Order created: {notification.OrderId}");
    }
}

Лицензия

Этот пакет распространяется под лицензией MIT License.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Reo.Core.BaseDomainModels.MediatR:

Package Downloads
Reo.Core.Application.Abstractions.MediatR

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
8.0.565 0 9/19/2025
8.0.564 0 9/19/2025
8.0.563 0 9/19/2025
8.0.562 0 9/19/2025
8.0.561 45 9/16/2025
8.0.560 45 9/16/2025
8.0.559 43 9/16/2025
8.0.558 49 9/16/2025
8.0.557 53 9/15/2025
8.0.556 66 9/15/2025
8.0.555 85 9/12/2025
8.0.554 128 9/11/2025
8.0.553 132 9/11/2025
8.0.552 127 9/11/2025
8.0.551 129 9/11/2025
8.0.550 127 9/11/2025
8.0.548 125 9/11/2025
8.0.547 123 9/11/2025
8.0.546 128 9/11/2025
8.0.545 127 9/11/2025
8.0.544 137 9/10/2025
8.0.543 133 9/10/2025
8.0.542 129 9/10/2025
8.0.541 132 9/10/2025
8.0.540 124 9/9/2025
8.0.539 133 9/9/2025
8.0.538 129 9/9/2025
8.0.537 130 9/9/2025
8.0.536 130 9/9/2025
8.0.535 129 9/9/2025
8.0.534 132 9/9/2025
8.0.533 129 9/9/2025
8.0.532 134 9/8/2025
8.0.531 109 9/5/2025
8.0.530 143 9/4/2025
8.0.529 131 9/4/2025
8.0.528 140 9/4/2025
8.0.527 142 9/4/2025
8.0.526 148 9/3/2025
8.0.525 126 9/2/2025
8.0.524 128 9/2/2025
8.0.523 128 9/2/2025
8.0.522 181 8/28/2025
8.0.521 179 8/27/2025
8.0.520 181 8/27/2025
8.0.519 177 8/27/2025
8.0.518 176 8/27/2025
8.0.517 152 8/25/2025
8.0.516 270 8/25/2025
8.0.515 199 8/24/2025
8.0.514 129 8/21/2025
8.0.513 136 8/20/2025
8.0.512 128 8/20/2025
8.0.511 128 8/20/2025
8.0.510 126 8/18/2025
8.0.509 130 8/18/2025
8.0.508 139 8/13/2025
8.0.506 139 8/13/2025
8.0.505 132 8/13/2025
8.0.504 137 8/13/2025
8.0.503 132 8/13/2025
8.0.502 137 8/12/2025
8.0.501 132 8/12/2025
8.0.500 136 8/12/2025
8.0.499 139 8/12/2025
8.0.498 132 8/11/2025
8.0.497 171 8/8/2025
8.0.496 171 8/8/2025
8.0.495 177 8/8/2025
8.0.494 199 8/8/2025
8.0.493 209 8/7/2025
8.0.492 210 8/7/2025
8.0.491 205 8/7/2025
8.0.490 206 8/7/2025
8.0.489 226 8/5/2025
8.0.488 225 8/5/2025
8.0.487 91 8/1/2025
8.0.486 119 7/30/2025
8.0.485 103 7/28/2025
8.0.484 93 7/28/2025
8.0.483 95 7/28/2025
8.0.482 97 7/28/2025
8.0.481 96 7/28/2025
8.0.480 351 7/25/2025
8.0.479 376 7/25/2025
8.0.478 383 7/25/2025
8.0.477 390 7/25/2025
8.0.476 396 7/25/2025
8.0.475 442 7/24/2025
8.0.474 442 7/24/2025
8.0.473 511 7/23/2025
8.0.472 509 7/23/2025
8.0.470 515 7/23/2025
8.0.469 511 7/23/2025
8.0.468 510 7/23/2025
8.0.467 512 7/23/2025
8.0.466 522 7/23/2025
8.0.465 516 7/23/2025
8.0.464 520 7/23/2025
8.0.463 516 7/23/2025
8.0.462 531 7/22/2025
8.0.461 527 7/22/2025
8.0.460 417 7/21/2025
8.0.459 98 7/18/2025
8.0.458 109 7/18/2025
8.0.457 141 7/17/2025
8.0.456 136 7/17/2025
8.0.455 140 7/17/2025
8.0.454 144 7/17/2025
8.0.453 138 7/17/2025
8.0.452 139 7/17/2025
8.0.451 138 7/17/2025
8.0.450 138 7/17/2025
8.0.449 141 7/17/2025
8.0.448 139 7/17/2025
8.0.447 140 7/16/2025
8.0.446 144 7/16/2025
8.0.445 140 7/16/2025
8.0.444 144 7/16/2025
8.0.443 142 7/16/2025
8.0.442 141 7/16/2025
8.0.439 138 7/15/2025
8.0.438 142 7/15/2025
8.0.437 137 7/15/2025
8.0.436 134 7/15/2025
8.0.435 139 7/15/2025
8.0.433 147 7/14/2025
8.0.432 143 7/14/2025
8.0.431 127 7/11/2025
8.0.430 128 7/11/2025
8.0.429 148 7/10/2025
8.0.428 143 7/10/2025
8.0.427 148 7/9/2025
8.0.426 150 7/8/2025
8.0.425 145 7/8/2025
8.0.424 145 7/8/2025
8.0.423 150 7/8/2025
8.0.422 140 7/8/2025
8.0.421 148 7/8/2025
8.0.420 141 7/7/2025
8.0.419 145 7/7/2025
8.0.418 144 7/7/2025
8.0.417 144 7/7/2025
8.0.416 142 7/6/2025
8.0.415 111 7/4/2025
8.0.414 114 7/4/2025
8.0.411 156 7/3/2025
8.0.410 152 7/3/2025
8.0.409 150 7/3/2025
8.0.408 149 7/1/2025
8.0.407 141 7/1/2025
8.0.406 147 7/1/2025
8.0.405 149 7/1/2025
8.0.404 190 6/26/2025
8.0.403 143 6/26/2025
8.0.401 234 6/24/2025
8.0.400 152 6/24/2025
8.0.399 144 6/23/2025
8.0.398 145 6/23/2025
8.0.397 104 6/20/2025
8.0.396 154 6/19/2025
8.0.395 144 6/18/2025
8.0.394 146 6/18/2025
8.0.392 147 6/18/2025
8.0.390 241 6/18/2025
6.0.565 0 9/19/2025
6.0.564 0 9/19/2025
6.0.563 0 9/19/2025
6.0.562 0 9/19/2025
6.0.561 42 9/16/2025
6.0.560 43 9/16/2025
6.0.559 41 9/16/2025
6.0.558 44 9/16/2025
6.0.557 49 9/15/2025
6.0.556 49 9/15/2025
6.0.555 85 9/12/2025
6.0.554 125 9/11/2025
6.0.553 129 9/11/2025
6.0.552 125 9/11/2025
6.0.551 123 9/11/2025
6.0.550 125 9/11/2025
6.0.548 124 9/11/2025
6.0.547 124 9/11/2025
6.0.546 127 9/11/2025
6.0.545 123 9/11/2025
6.0.544 131 9/10/2025
6.0.543 128 9/10/2025
6.0.542 127 9/10/2025
6.0.541 133 9/10/2025
6.0.540 126 9/9/2025
6.0.539 130 9/9/2025
6.0.538 130 9/9/2025
6.0.537 124 9/9/2025
6.0.536 129 9/9/2025
6.0.535 123 9/9/2025
6.0.534 128 9/9/2025
6.0.533 126 9/9/2025
6.0.532 129 9/8/2025
6.0.531 100 9/5/2025
6.0.530 142 9/4/2025
6.0.529 132 9/4/2025
6.0.528 135 9/4/2025
6.0.527 139 9/4/2025
6.0.526 140 9/3/2025
6.0.525 122 9/2/2025
6.0.524 126 9/2/2025
6.0.523 128 9/2/2025
6.0.522 180 8/28/2025
6.0.521 172 8/27/2025
6.0.520 175 8/27/2025
6.0.519 176 8/27/2025
6.0.518 173 8/27/2025
6.0.517 148 8/25/2025
6.0.516 265 8/25/2025
6.0.515 201 8/24/2025
6.0.514 128 8/21/2025
6.0.513 131 8/20/2025
6.0.512 123 8/20/2025
6.0.511 126 8/20/2025
6.0.510 133 8/18/2025
6.0.509 127 8/18/2025
6.0.508 133 8/13/2025
6.0.506 133 8/13/2025
6.0.505 128 8/13/2025
6.0.504 137 8/13/2025
6.0.503 132 8/13/2025
6.0.502 132 8/12/2025
6.0.501 131 8/12/2025
6.0.500 131 8/12/2025
6.0.499 134 8/12/2025
6.0.498 133 8/11/2025
6.0.497 165 8/8/2025
6.0.496 172 8/8/2025
6.0.495 181 8/8/2025
6.0.494 196 8/8/2025
6.0.493 214 8/7/2025
6.0.492 205 8/7/2025
6.0.491 208 8/7/2025
6.0.490 208 8/7/2025
6.0.489 224 8/5/2025
6.0.488 225 8/5/2025
6.0.487 88 8/1/2025
6.0.486 115 7/30/2025
6.0.485 93 7/28/2025
6.0.484 94 7/28/2025
6.0.483 96 7/28/2025
6.0.482 94 7/28/2025
6.0.481 95 7/28/2025
6.0.480 349 7/25/2025
6.0.479 378 7/25/2025
6.0.478 378 7/25/2025
6.0.477 387 7/25/2025
6.0.476 391 7/25/2025
6.0.475 442 7/24/2025
6.0.474 441 7/24/2025
6.0.473 511 7/23/2025
6.0.472 511 7/23/2025
6.0.470 508 7/23/2025
6.0.469 507 7/23/2025
6.0.468 513 7/23/2025
6.0.467 509 7/23/2025
6.0.466 513 7/23/2025
6.0.465 516 7/23/2025
6.0.464 516 7/23/2025
6.0.463 516 7/23/2025
6.0.462 525 7/22/2025
6.0.461 534 7/22/2025
6.0.460 415 7/21/2025
6.0.459 91 7/18/2025
6.0.458 106 7/18/2025
6.0.457 139 7/17/2025
6.0.456 142 7/17/2025
6.0.455 143 7/17/2025
6.0.454 132 7/17/2025
6.0.453 127 7/17/2025
6.0.452 126 7/17/2025
6.0.451 130 7/17/2025
6.0.450 129 7/17/2025
6.0.449 131 7/17/2025
6.0.448 131 7/17/2025
6.0.447 132 7/16/2025
6.0.446 132 7/16/2025
6.0.445 138 7/16/2025
6.0.444 138 7/16/2025
6.0.443 132 7/16/2025
6.0.442 130 7/16/2025
6.0.439 135 7/15/2025
6.0.438 131 7/15/2025
6.0.437 131 7/15/2025
6.0.436 135 7/15/2025
6.0.435 134 7/15/2025
6.0.433 136 7/14/2025
6.0.432 136 7/14/2025
6.0.431 119 7/11/2025
6.0.430 124 7/11/2025
6.0.429 140 7/10/2025
6.0.428 140 7/10/2025
6.0.427 138 7/9/2025
6.0.426 139 7/8/2025
6.0.425 142 7/8/2025
6.0.424 141 7/8/2025
6.0.423 138 7/8/2025
6.0.422 133 7/8/2025
6.0.421 141 7/8/2025
6.0.420 137 7/7/2025
6.0.419 145 7/7/2025
6.0.418 135 7/7/2025
6.0.417 137 7/7/2025
6.0.416 138 7/6/2025
6.0.415 101 7/4/2025
6.0.414 107 7/4/2025
6.0.411 144 7/3/2025
6.0.410 139 7/3/2025
6.0.409 143 7/3/2025
6.0.408 137 7/1/2025
6.0.407 135 7/1/2025
6.0.406 140 7/1/2025
6.0.405 147 7/1/2025
6.0.404 134 6/26/2025
6.0.403 137 6/26/2025
6.0.401 140 6/24/2025
6.0.400 141 6/24/2025
6.0.399 139 6/23/2025
6.0.398 144 6/23/2025
6.0.397 101 6/20/2025
6.0.396 141 6/19/2025
6.0.395 141 6/18/2025
6.0.394 141 6/18/2025
6.0.392 140 6/18/2025
6.0.390 145 6/18/2025