Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Suleman275/MiniEvents

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“¦ MiniEvents

A lightweight, event publisher for .NET. Publish events with ease and automatically wire up event handlers via dependency injection.

πŸš€ Features

  • Publish/Subscribe pattern for decoupling event logic
  • Automatic registration of event handlers via reflection
  • Testable and composable
  • Minimal, clean, no external dependencies

πŸ“„ Usage

  1. Define an Event
public class UserRegisteredEvent : IEvent
{
    public string Email { get; set; }
}
  1. Create a Handler
public class SendWelcomeEmailHandler : IEventHandler<UserRegisteredEvent>
{
    public Task HandleAsync(UserRegisteredEvent e)
    {
        Console.WriteLine($"Sending welcome email to {e.Email}");
        return Task.CompletedTask;
    }
}
  1. Register Services

In Program.cs:

builder.Services.AddMiniEvents(Assembly.GetExecutingAssembly());

OR

builder.Services.AddMiniEvents(typeof(Program).Assembly);
  1. Publish Event
public class UserService
{
    private readonly IEventPublisher _eventPublisher;

    public UserService(IEventPublisher eventPublisher)
    {
        _eventPublisher = eventPublisher;
    }

    public void RegisterUser(string email)
    {
        // Logic to save user...
        _eventPublisher.Publish(new UserRegisteredEvent { Email = email });
    }
}

πŸ”§ Setup

To use AddMiniEvents, make sure to pass in the assembly or assemblies where your IEventHandler<> implementations are located. You can also pass in multiple assemblies if your handlers are located in different projects:

services.AddMiniEvents(
    typeof(SendWelcomeEmailHandler).Assembly, 
    typeof(Program).Assembly);

βœ… Benefits

  • Encourages separation of concerns
  • Eliminates tight coupling between components
  • Easy to test and reason about

πŸ“‚ Folder Structure (Example)

YourProject/
β”œβ”€β”€ Events/
β”‚   └── UserRegisteredEvent.cs
β”œβ”€β”€ Handlers/
β”‚   └── SendWelcomeEmailHandler.cs
└── Services/
    └── UserService.cs

πŸ’¬ Contributing

Pull requests are welcome! If you find a bug or have a feature request, please open an issue.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages