CCSWE.nanoFramework.Mediator
0.2.5
See the version list below for details.
dotnet add package CCSWE.nanoFramework.Mediator --version 0.2.5
NuGet\Install-Package CCSWE.nanoFramework.Mediator -Version 0.2.5
<PackageReference Include="CCSWE.nanoFramework.Mediator" Version="0.2.5" />
paket add CCSWE.nanoFramework.Mediator --version 0.2.5
#r "nuget: CCSWE.nanoFramework.Mediator, 0.2.5"
// Install CCSWE.nanoFramework.Mediator as a Cake Addin #addin nuget:?package=CCSWE.nanoFramework.Mediator&version=0.2.5 // Install CCSWE.nanoFramework.Mediator as a Cake Tool #tool nuget:?package=CCSWE.nanoFramework.Mediator&version=0.2.5
CCSWE.nanoFramework.Mediator
A simple asynchronous mediator implementation for nanoFramework. Provides in-process publisher-subscriber communication while keeping all parties decoupled.
Based on Mako-IoT.Device.Services.Mediator
Usage
Create classes for your events
public class Event1 : IMediatorEvent
{
public string Data { get; set; }
}
public class Event2 : IMediatorEvent
{
public string Text { get; set; }
}
Your event subscriber must implement IMediatorEventHandler
interface
public class EventHandlerService : IMediatorEventHandler
{
public void HandleEvent(IMediatorEvent mediatorEvent)
{
switch (mediatorEvent)
{
case Event1 event1:
Debug.WriteLine($"[{nameof(EventHandlerService)}] Event1 received. The data is: {event1.Data}");
break;
case Event2 event2:
Debug.WriteLine($"[{nameof(EventHandlerService)}] Event2 received The text is: {event2.Text}");
break;
}
}
}
Use IMediator
to publish events
public class EventPublisherService : IEventPublisherService
{
private readonly IMediator _mediator;
public EventPublisherService(IMediator mediator)
{
_mediator = mediator;
}
public void DoSomething()
{
_mediator.Publish(new Event2 { Text = "Hello from EventPublisherService" });
}
}
Register AsyncMediator
and singleton subscribers to an IHostBuilder
...
var hostBuilder = new HostBuilder();
hostBuilder.UseMediator(options =>
{
options.AddSubscriber(typeof(Event1), typeof(Service2));
options.AddSubscriber(typeof(Event2), typeof(Service2));
});
... or directly to an IServiceCollection
var serviceCollection = new ServiceCollection();
serviceCollection.AddMediator(options =>
{
options.AddSubscriber(typeof(Event1), typeof(Service2));
options.AddSubscriber(typeof(Event2), typeof(Service2));
});
For transient and scoped services you can use the Subscribe
and Unsubscribe
overloads that take a specific instance.
public class TransientService : IDisposable
{
private readonly IMediator _mediator;
public TransientService(IMediator mediator)
{
_mediator = mediator;
_mediator.Subscribe(typeof(Event1), this);
_mediator.Subscribe(typeof(Event2), this);
}
public void Dispose()
{
_mediator.Unsubscribe(typeof(Event1), this);
_mediator.Unsubscribe(typeof(Event2), this);
}
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET Framework | net is compatible. |
-
- CCSWE.nanoFramework.Collections.Concurrent (>= 0.4.3)
- CCSWE.nanoFramework.Core (>= 0.2.6)
- CCSWE.nanoFramework.Threading (>= 0.2.3)
- nanoFramework.CoreLibrary (>= 1.14.2)
- nanoFramework.DependencyInjection (>= 1.0.35)
- nanoFramework.Hosting (>= 1.0.25)
- nanoFramework.Logging (>= 1.1.63)
- nanoFramework.System.Collections (>= 1.5.18)
- nanoFramework.System.Threading (>= 1.1.19)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.71 | 62 | 10/31/2024 |
1.0.70 | 75 | 10/24/2024 |
1.0.69 | 84 | 10/10/2024 |
1.0.68 | 76 | 10/3/2024 |
1.0.67 | 77 | 9/26/2024 |
1.0.66 | 81 | 9/23/2024 |
1.0.65 | 80 | 9/22/2024 |
1.0.64 | 78 | 9/21/2024 |
1.0.63 | 101 | 9/21/2024 |
1.0.62 | 121 | 9/14/2024 |
1.0.61 | 95 | 9/13/2024 |
1.0.59 | 92 | 9/2/2024 |
1.0.58 | 90 | 9/1/2024 |
1.0.57 | 89 | 8/31/2024 |
1.0.56 | 89 | 8/31/2024 |
1.0.55 | 113 | 8/14/2024 |
1.0.54 | 111 | 8/13/2024 |
1.0.53 | 101 | 8/11/2024 |
1.0.52 | 100 | 8/11/2024 |
1.0.51 | 104 | 8/8/2024 |
1.0.50 | 90 | 8/7/2024 |
1.0.49 | 101 | 8/6/2024 |
1.0.48 | 70 | 8/4/2024 |
1.0.47 | 71 | 8/3/2024 |
1.0.46 | 79 | 8/2/2024 |
1.0.45 | 81 | 8/2/2024 |
1.0.44 | 71 | 7/29/2024 |
1.0.43 | 61 | 7/27/2024 |
1.0.42 | 77 | 7/26/2024 |
1.0.41 | 74 | 7/25/2024 |
1.0.40 | 86 | 7/24/2024 |
1.0.39 | 96 | 7/19/2024 |
1.0.38 | 90 | 7/17/2024 |
1.0.37 | 85 | 7/15/2024 |
1.0.36 | 78 | 7/14/2024 |
1.0.35 | 94 | 7/13/2024 |
1.0.34 | 89 | 7/12/2024 |
1.0.33 | 112 | 6/16/2024 |
1.0.32 | 96 | 6/14/2024 |
1.0.31 | 95 | 6/13/2024 |
1.0.27 | 93 | 6/7/2024 |
1.0.26 | 101 | 6/6/2024 |
1.0.25 | 97 | 6/5/2024 |
1.0.24 | 96 | 6/5/2024 |
1.0.22 | 97 | 5/25/2024 |
1.0.21 | 98 | 5/24/2024 |
1.0.20 | 92 | 5/23/2024 |
1.0.19 | 102 | 5/21/2024 |
1.0.18 | 106 | 5/20/2024 |
1.0.17 | 97 | 5/19/2024 |
1.0.16 | 99 | 5/19/2024 |
1.0.15 | 108 | 5/19/2024 |
1.0.14 | 96 | 5/18/2024 |
1.0.12 | 98 | 5/16/2024 |
1.0.11 | 110 | 5/15/2024 |
1.0.10 | 83 | 5/13/2024 |
1.0.9 | 86 | 5/11/2024 |
1.0.8 | 91 | 5/10/2024 |
1.0.7 | 106 | 4/27/2024 |
1.0.6 | 108 | 4/26/2024 |
1.0.5 | 107 | 4/25/2024 |
1.0.4 | 101 | 4/25/2024 |
1.0.3 | 111 | 4/23/2024 |
1.0.2 | 111 | 4/20/2024 |
1.0.1 | 110 | 4/19/2024 |
1.0.0 | 111 | 4/19/2024 |
0.3.31 | 107 | 4/17/2024 |
0.3.30 | 119 | 4/13/2024 |
0.3.29 | 93 | 4/12/2024 |
0.3.28 | 111 | 4/11/2024 |
0.3.27 | 104 | 4/10/2024 |
0.3.26 | 104 | 4/9/2024 |
0.3.25 | 104 | 4/8/2024 |
0.3.24 | 91 | 4/7/2024 |
0.3.23 | 116 | 4/6/2024 |
0.3.22 | 106 | 4/5/2024 |
0.3.21 | 102 | 4/4/2024 |
0.3.20 | 104 | 4/3/2024 |
0.3.19 | 114 | 3/24/2024 |
0.3.18 | 119 | 3/22/2024 |
0.3.17 | 95 | 3/21/2024 |
0.3.16 | 148 | 2/6/2024 |
0.3.15 | 111 | 2/3/2024 |
0.3.14 | 106 | 2/1/2024 |
0.3.13 | 99 | 1/27/2024 |
0.3.12 | 98 | 1/26/2024 |
0.3.11 | 240 | 11/23/2023 |
0.3.10 | 128 | 11/22/2023 |
0.3.9 | 130 | 11/21/2023 |
0.3.8 | 140 | 11/17/2023 |
0.3.7 | 144 | 11/14/2023 |
0.3.6 | 122 | 11/13/2023 |
0.3.5 | 130 | 11/12/2023 |
0.3.4 | 127 | 11/12/2023 |
0.3.3 | 121 | 11/12/2023 |
0.3.2 | 117 | 11/12/2023 |
0.3.1 | 133 | 11/10/2023 |
0.3.0 | 128 | 11/10/2023 |
0.2.14 | 134 | 11/9/2023 |
0.2.13 | 131 | 11/8/2023 |
0.2.12 | 120 | 11/7/2023 |
0.2.10 | 143 | 11/7/2023 |
0.2.9 | 181 | 11/6/2023 |
0.2.7 | 183 | 11/6/2023 |
0.2.6 | 152 | 11/4/2023 |
0.2.5 | 145 | 11/3/2023 |
0.2.4 | 135 | 11/2/2023 |
0.2.3 | 135 | 11/2/2023 |
0.2.2 | 141 | 11/2/2023 |
0.2.1 | 132 | 10/30/2023 |
0.2.0 | 123 | 10/30/2023 |
0.1.8 | 148 | 10/28/2023 |
0.1.7 | 129 | 10/24/2023 |
0.1.6 | 129 | 10/24/2023 |
0.1.5 | 145 | 10/24/2023 |
0.1.4 | 143 | 10/24/2023 |
0.1.3 | 140 | 10/20/2023 |
0.1.2-beta | 135 | 10/20/2023 |
0.1.1-beta | 128 | 10/20/2023 |