Reo.Core.BaseDomainModels.MediatR 6.0.408

There is a newer version of this package available.
See the version list below for details.
dotnet add package Reo.Core.BaseDomainModels.MediatR --version 6.0.408
                    
NuGet\Install-Package Reo.Core.BaseDomainModels.MediatR -Version 6.0.408
                    
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="6.0.408" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Reo.Core.BaseDomainModels.MediatR" Version="6.0.408" />
                    
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 6.0.408
                    
#r "nuget: Reo.Core.BaseDomainModels.MediatR, 6.0.408"
                    
#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@6.0.408
                    
#: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=6.0.408
                    
Install as a Cake Addin
#tool nuget:?package=Reo.Core.BaseDomainModels.MediatR&version=6.0.408
                    
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.473 9 7/23/2025
8.0.472 8 7/23/2025
8.0.470 10 7/23/2025
8.0.469 13 7/23/2025
8.0.468 10 7/23/2025
8.0.467 9 7/23/2025
8.0.466 13 7/23/2025
8.0.465 10 7/23/2025
8.0.464 12 7/23/2025
8.0.463 11 7/23/2025
8.0.462 14 7/22/2025
8.0.461 12 7/22/2025
8.0.460 15 7/21/2025
8.0.459 43 7/18/2025
8.0.458 73 7/18/2025
8.0.457 106 7/17/2025
8.0.456 104 7/17/2025
8.0.455 108 7/17/2025
8.0.454 110 7/17/2025
8.0.453 105 7/17/2025
8.0.452 106 7/17/2025
8.0.451 104 7/17/2025
8.0.450 106 7/17/2025
8.0.449 108 7/17/2025
8.0.448 107 7/17/2025
8.0.447 107 7/16/2025
8.0.446 112 7/16/2025
8.0.445 105 7/16/2025
8.0.444 107 7/16/2025
8.0.443 111 7/16/2025
8.0.442 111 7/16/2025
8.0.439 130 7/15/2025
8.0.438 134 7/15/2025
8.0.437 128 7/15/2025
8.0.436 126 7/15/2025
8.0.435 131 7/15/2025
8.0.433 136 7/14/2025
8.0.432 133 7/14/2025
8.0.431 117 7/11/2025
8.0.430 117 7/11/2025
8.0.429 138 7/10/2025
8.0.428 133 7/10/2025
8.0.427 139 7/9/2025
8.0.426 141 7/8/2025
8.0.425 136 7/8/2025
8.0.424 136 7/8/2025
8.0.423 140 7/8/2025
8.0.422 131 7/8/2025
8.0.421 139 7/8/2025
8.0.420 132 7/7/2025
8.0.419 135 7/7/2025
8.0.418 135 7/7/2025
8.0.417 134 7/7/2025
8.0.416 133 7/6/2025
8.0.415 99 7/4/2025
8.0.414 103 7/4/2025
8.0.411 144 7/3/2025
8.0.410 140 7/3/2025
8.0.409 139 7/3/2025
8.0.408 139 7/1/2025
8.0.407 129 7/1/2025
8.0.406 135 7/1/2025
8.0.405 139 7/1/2025
8.0.404 129 6/26/2025
8.0.403 134 6/26/2025
8.0.401 182 6/24/2025
8.0.400 143 6/24/2025
8.0.399 136 6/23/2025
8.0.398 136 6/23/2025
8.0.397 96 6/20/2025
8.0.396 146 6/19/2025
8.0.395 136 6/18/2025
8.0.394 138 6/18/2025
8.0.392 138 6/18/2025
8.0.390 148 6/18/2025
6.0.473 9 7/23/2025
6.0.472 8 7/23/2025
6.0.470 7 7/23/2025
6.0.469 11 7/23/2025
6.0.468 8 7/23/2025
6.0.467 8 7/23/2025
6.0.466 9 7/23/2025
6.0.465 12 7/23/2025
6.0.464 12 7/23/2025
6.0.463 9 7/23/2025
6.0.462 10 7/22/2025
6.0.461 15 7/22/2025
6.0.460 14 7/21/2025
6.0.459 39 7/18/2025
6.0.458 70 7/18/2025
6.0.457 105 7/17/2025
6.0.456 110 7/17/2025
6.0.455 108 7/17/2025
6.0.454 105 7/17/2025
6.0.453 101 7/17/2025
6.0.452 100 7/17/2025
6.0.451 103 7/17/2025
6.0.450 102 7/17/2025
6.0.449 105 7/17/2025
6.0.448 104 7/17/2025
6.0.447 106 7/16/2025
6.0.446 106 7/16/2025
6.0.445 109 7/16/2025
6.0.444 110 7/16/2025
6.0.443 104 7/16/2025
6.0.442 103 7/16/2025
6.0.439 127 7/15/2025
6.0.438 122 7/15/2025
6.0.437 123 7/15/2025
6.0.436 127 7/15/2025
6.0.435 125 7/15/2025
6.0.433 127 7/14/2025
6.0.432 125 7/14/2025
6.0.431 108 7/11/2025
6.0.430 113 7/11/2025
6.0.429 129 7/10/2025
6.0.428 130 7/10/2025
6.0.427 129 7/9/2025
6.0.426 129 7/8/2025
6.0.425 133 7/8/2025
6.0.424 131 7/8/2025
6.0.423 128 7/8/2025
6.0.422 122 7/8/2025
6.0.421 131 7/8/2025
6.0.420 127 7/7/2025
6.0.419 129 7/7/2025
6.0.418 124 7/7/2025
6.0.417 127 7/7/2025
6.0.416 128 7/6/2025
6.0.415 88 7/4/2025
6.0.414 95 7/4/2025
6.0.411 131 7/3/2025
6.0.410 127 7/3/2025
6.0.409 131 7/3/2025
6.0.408 127 7/1/2025
6.0.407 125 7/1/2025
6.0.406 128 7/1/2025
6.0.405 136 7/1/2025
6.0.404 124 6/26/2025
6.0.403 127 6/26/2025
6.0.401 132 6/24/2025
6.0.400 132 6/24/2025
6.0.399 131 6/23/2025
6.0.398 136 6/23/2025
6.0.397 93 6/20/2025
6.0.396 133 6/19/2025
6.0.395 133 6/18/2025
6.0.394 133 6/18/2025
6.0.392 132 6/18/2025
6.0.390 134 6/18/2025