Persilsoft.Events
1.0.6
dotnet add package Persilsoft.Events --version 1.0.6
NuGet\Install-Package Persilsoft.Events -Version 1.0.6
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="Persilsoft.Events" Version="1.0.6" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Persilsoft.Events --version 1.0.6
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Persilsoft.Events, 1.0.6"
#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.
// Install Persilsoft.Events as a Cake Addin #addin nuget:?package=Persilsoft.Events&version=1.0.6 // Install Persilsoft.Events as a Cake Tool #tool nuget:?package=Persilsoft.Events&version=1.0.6
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Persilsoft.Events
It contains a generic service for handling domain events in your application.
Example
First, you need to create a class that inherits from IDomainEvent. This class will contain the data needed to process your event. For example:
using Persilsoft.Events.Interfaces;
public class OrderReceivedEvent(string customerName, string orderId) : IDomainEvent
{
public string CustomerName { get; } = customerName;
public string OrderId { get; } = orderId;
}
Next, you should create the event handler. This class implements IDomainEventHandler interface.
using Persilsoft.Events.Interfaces;
internal sealed class OrderReceivedEventHandler(ILogger<OrderReceivedEventHandler> logger)
: IDomainEventHandler<OrderReceivedEvent>
{
public Task Handle(OrderReceivedEvent e)
{
// More logic here ...
logger.LogInformation("Customer: {customerName}, OrderId: {OrderId}", e.CustomerName, e.OrderId);
return Task.CompletedTask;
}
}
Now, you should register the required services and you event handler.
using ServiceCollectionExtensions;
builder.Services.AddDomainEventServices();
builder.Services.AddScoped<IDomainEventHandler<OrderReceivedEvent>, OrderReceivedEventHandler>();
Finally, you can use the service.
using Persilsoft.Events.Interfaces;
app.MapPost("/order/send", async (IDomainEventHub<OrderReceivedEvent> eventHub) =>
{
await eventHub.Raise(new OrderReceivedEvent("Juan Pérez", "PS-00000001"));
})
.WithName("Order");
Note:
You can use constructor injection
Product | Versions 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net8.0
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.