Reo.Core.BaseDomainModels.MediatorGenerator
10.0.28
See the version list below for details.
dotnet add package Reo.Core.BaseDomainModels.MediatorGenerator --version 10.0.28
NuGet\Install-Package Reo.Core.BaseDomainModels.MediatorGenerator -Version 10.0.28
<PackageReference Include="Reo.Core.BaseDomainModels.MediatorGenerator" Version="10.0.28" />
<PackageVersion Include="Reo.Core.BaseDomainModels.MediatorGenerator" Version="10.0.28" />
<PackageReference Include="Reo.Core.BaseDomainModels.MediatorGenerator" />
paket add Reo.Core.BaseDomainModels.MediatorGenerator --version 10.0.28
#r "nuget: Reo.Core.BaseDomainModels.MediatorGenerator, 10.0.28"
#:package Reo.Core.BaseDomainModels.MediatorGenerator@10.0.28
#addin nuget:?package=Reo.Core.BaseDomainModels.MediatorGenerator&version=10.0.28
#tool nuget:?package=Reo.Core.BaseDomainModels.MediatorGenerator&version=10.0.28
Reo.Core.BaseDomainModels.MediatorGenerator
Описание пакета
Пакет Reo.Core.BaseDomainModels.MediatorGenerator предоставляет базовые классы и интерфейсы для реализации доменной
логики в приложениях, использующих подход Domain-Driven Design (DDD) с интеграцией MediatR. Он решает задачи
структурирования доменных объектов, управления командами и событиями, а также обеспечивает стандартный интерфейс для
работы с репозиториями. Основные функции:
- Поддержка агрегатов домена с возможностью обработки команд и событий.
- Интеграция с Mediator.Abstractions для декларативного управления бизнес-логикой.
- Обобщённые интерфейсы для репозиториев (чтение/запись) с поддержкой типизированных идентификаторов.
Основные компоненты
Классы
ReoAggregateRoot<TId>Базовый класс для агрегатов домена. Реализует логику добавления команд, событий и обработки изменений состояния.ReoReferenceModelАбстрактный класс для моделей справочников, наследуется отReoAggregateRoot<int>. Предоставляет базовое свойствоName.
Интерфейсы
IReoDomainCommandОбобщённый интерфейс для команд, реализующихIRequestиз Mediator.Abstractions. Используется для передачи инструкций в систему.IReoDomainCommandWithResultИнтерфейс для команд, возвращающих результат типаbool. РеализуетIRequest<bool>из Mediator.Abstractions.IReoDomainEventИнтерфейс для событий, используемых для реакции на изменения состояния агрегатов.IReoDomainReadOnlyBaseRepository<TAggregateRoot, TId>Обобщённый интерфейс для репозиториев чтения. Предоставляет методGetAsyncдля получения агрегата по идентификатору.IReoDomainWriteOnlyBaseRepository<TAggregateRoot, TId>Обобщённый интерфейс для репозиториев записи. Предоставляет методSaveAsyncдля сохранения агрегата.
Службы
IReoDomainCommandsExecutorИнтерфейс для исполнения команд, включает методыExecuteDomainCommandsAsyncиExecuteDomainCommandsWithResultsAsync.IReoDomainEventsExecutorИнтерфейс для исполнения событий, включает методыExecuteDomainEventsAsyncиSequentialExecuteDomainEventsAsync.
Требования
- .NET версии: .NET 8.0 и выше.
- Зависимости:
Установка
NuGet Package Manager
Install-Package Reo.Core.BaseDomainModels.MediatorGenerator
.NET CLI
dotnet add package Reo.Core.BaseDomainModels.MediatorGenerator
Настройка
Регистрация в DI-контейнере (ASP.NET Core)
public void ConfigureServices(IServiceCollection services)
{
services.AddMediator();
}
Конфигурационные параметры
N/A (пакет не требует дополнительной настройки).
Использование
Пример 1: Создание агрегата
public class MyAggregateRoot : ReoAggregateRoot<int>
{
public string Data { get; private set; }
public void UpdateData(string newData)
{
if (Data == newData) return;
Data = newData;
AddDomainEvent(new DataUpdatedEvent(newData));
}
}
Пример 2: Обработка команды
public class UpdateDataCommandHandler : IRequestHandler<UpdateDataCommand, bool>
{
private readonly IReoDomainWriteOnlyRepository<MyAggregateRoot> _repository;
public UpdateDataCommandHandler(IReoDomainWriteOnlyRepository<MyAggregateRoot> repository)
{
_repository = repository;
}
public async Task<bool> Handle(UpdateDataCommand request, CancellationToken cancellationToken)
{
var aggregate = await _repository.GetAsync(request.Id, cancellationToken);
aggregate.UpdateData(request.NewData);
await _repository.SaveAsync(aggregate, cancellationToken);
return true;
}
}
Пример 3: Репозиторий
public class MyRepository : IReoDomainReadOnlyRepository<MyAggregateRoot>, IReoDomainWriteOnlyRepository<MyAggregateRoot>
{
public async Task<MyAggregateRoot> GetAsync(int id, CancellationToken token)
{
// Реализация получения данных из источника
return new MyAggregateRoot(id, "Initial data");
}
public async Task<int> SaveAsync(MyAggregateRoot domain, CancellationToken token)
{
// Реализация сохранения данных
return domain.Id;
}
}
Лицензия
Данный пакет распространяется под лицензией MIT.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. 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. |
-
net10.0
- FluentValidation (>= 12.1.1)
- JetBrains.Annotations (>= 2025.2.4)
- Mediator.Abstractions (>= 3.0.1)
- Microsoft.Extensions.Configuration (>= 10.0.2)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.2)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.2)
- Microsoft.Extensions.DependencyInjection (>= 10.0.2)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.2)
- Microsoft.Extensions.Http.Polly (>= 10.0.2)
- Microsoft.Extensions.Logging (>= 10.0.2)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.2)
- Microsoft.Extensions.Options (>= 10.0.2)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.2)
- Polly (>= 8.5.0)
- Reo.Core.BaseDomainModels (>= 10.0.28)
- stbychkov.AutoLoggerMessage (>= 1.0.15)
- System.Linq.Async (>= 7.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Reo.Core.BaseDomainModels.MediatorGenerator:
| Package | Downloads |
|---|---|
|
Reo.Core.Application.Abstractions.MediatorGenerator
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 10.0.33 | 24 | 2/13/2026 |
| 10.0.32 | 26 | 2/13/2026 |
| 10.0.31 | 32 | 2/13/2026 |
| 10.0.30 | 33 | 2/12/2026 |
| 10.0.29 | 35 | 2/12/2026 |
| 10.0.28 | 39 | 2/11/2026 |
| 10.0.27 | 36 | 2/11/2026 |
| 10.0.26 | 83 | 2/9/2026 |
| 10.0.25 | 78 | 2/9/2026 |
| 10.0.24 | 74 | 2/9/2026 |
| 10.0.23 | 79 | 2/9/2026 |
| 10.0.22 | 81 | 2/9/2026 |
| 10.0.21 | 83 | 2/9/2026 |
| 10.0.20 | 89 | 2/9/2026 |
| 10.0.15 | 87 | 2/6/2026 |
| 10.0.14 | 88 | 2/6/2026 |
| 10.0.13 | 92 | 2/4/2026 |
| 10.0.12 | 88 | 2/3/2026 |
| 10.0.11 | 90 | 2/2/2026 |
| 10.0.10 | 91 | 1/29/2026 |