VOOZH about

URL: https://www.nuget.org/packages/Reo.Core.BaseDomainModels.MediatR/

⇱ NuGet Gallery | Reo.Core.BaseDomainModels.MediatR 10.0.210




Reo.Core.BaseDomainModels.MediatR 10.0.210

dotnet add package Reo.Core.BaseDomainModels.MediatR --version 10.0.210
 
 
NuGet\Install-Package Reo.Core.BaseDomainModels.MediatR -Version 10.0.210
 
 
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="10.0.210" />
 
 
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Reo.Core.BaseDomainModels.MediatR" Version="10.0.210" />
 
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 10.0.210
 
 
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Reo.Core.BaseDomainModels.MediatR, 10.0.210"
 
 
#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@10.0.210
 
 
#: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=10.0.210
 
Install as a Cake Addin
#tool nuget:?package=Reo.Core.BaseDomainModels.MediatR&version=10.0.210
 
Install as a Cake Tool
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

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.

Product Versions Compatible and additional computed target framework versions.
.NET net10.0 net10.0 is compatible.  net10.0-android net10.0-android was computed.  net10.0-browser net10.0-browser was computed.  net10.0-ios net10.0-ios was computed.  net10.0-maccatalyst net10.0-maccatalyst was computed.  net10.0-macos net10.0-macos was computed.  net10.0-tvos net10.0-tvos was computed.  net10.0-windows 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
10.0.210 0 6/18/2026
10.0.209 62 6/17/2026
10.0.208 61 6/17/2026
10.0.207 65 6/17/2026
10.0.206 61 6/17/2026
10.0.205 74 6/16/2026
10.0.204 71 6/16/2026
10.0.203 82 6/16/2026
10.0.202 83 6/16/2026
10.0.201 86 6/16/2026
10.0.200 84 6/16/2026
10.0.199 92 6/16/2026
10.0.198 81 6/16/2026
10.0.197 108 6/16/2026
10.0.196 84 6/16/2026
10.0.195 93 6/15/2026
10.0.194 94 6/15/2026
10.0.193 94 6/15/2026
10.0.192 95 6/11/2026
10.0.191 92 6/11/2026
Loading failed