An open API service indexing awesome lists of open source software.

https://github.com/bugthesystem/funnybus

Simple event aggregator/messenger for .net applications.
https://github.com/bugthesystem/funnybus

c-sharp event-aggregation message-handler messenger

Last synced: 3 months ago
JSON representation

Simple event aggregator/messenger for .net applications.

Awesome Lists containing this project

README

          

FunnyBus
========

Simple event aggregator/messenger for .net applications

[![Build status](https://ci.appveyor.com/api/projects/status/30oww5lfnyesxlka?svg=true)](https://ci.appveyor.com/project/ziyasal/funnybus) [![Coverage Status](https://coveralls.io/repos/github/ziyasal/FunnyBus/badge.svg?branch=master)](https://coveralls.io/github/ziyasal/FunnyBus?branch=master)

* [Nuget Package](https://www.nuget.org/packages/FunnyBus/)

```chasrp
Install-Package FunnyBus
```

**Sample**

* Initialize bus
```csharp
var builder = new ContainerBuilder();
builder.RegisterAssemblyTypes(typeof(ProductHandler).Assembly)
.AsImplementedInterfaces().SingleInstance();
builder.Register(context => Bus.Instance).As();

IContainer container = builder.Build();
Bus.Configure(context => context.SetResolver(new AutofacFunnyDependencyResolver(container)));
```
* Message handler definition
```csharp
public class ProductHandler :
IHandle,
IHandle
{
public void Handle(CreateProductMessage message)
{
Console.WriteLine(message.Name);
}
public DeleteProductResult Handle(DeleteProductMessage message)
{
Console.WriteLine(message.Message);
return new DeleteProductResult { Success=true };
}
}
```
* Message definition
```csharp
public class DeleteProductMessage
{
public int Id {get; set;}
}
```
* Publish Message
```csharp
var bus = container.Resolve();
bus.Publish(new CreateProductMessage{ Name = "Funny Product" });

//If there is a return type
DeleteProductResult result=bus.Publish(new DeleteProductMessage{ Id = 10 });
```
* Register handler

Message handlers are automatically scanned and registered.
To disable this behavior set **AutoScanHandlers** option **false**;
```csharp
var bus = container.Resolve();
_bus.Subscribe();
```
* Remove handler
```csharp
var bus = container.Resolve();
_bus.UnSubscribe();
```