ReflectionEventing 2.2.0
See the version list below for details.
dotnet add package ReflectionEventing --version 2.2.0
NuGet\Install-Package ReflectionEventing -Version 2.2.0
<PackageReference Include="ReflectionEventing" Version="2.2.0" />
paket add ReflectionEventing --version 2.2.0
#r "nuget: ReflectionEventing, 2.2.0"
// Install ReflectionEventing as a Cake Addin #addin nuget:?package=ReflectionEventing&version=2.2.0 // Install ReflectionEventing as a Cake Tool #tool nuget:?package=ReflectionEventing&version=2.2.0
🚎 ReflectionEventing
Created with ❤ in Poland by lepo.co
ReflectionEventing is a powerful tool for developers looking to create decoupled designs in WPF, WinForms, or CLI applications. By leveraging the power of Dependency Injection (DI) and eventing, ReflectionEventing promotes better Inversion of Control (IoC), reducing coupling and enhancing the modularity and flexibility of your applications.
👀 What does this repo contain?
This repository houses the source code for the ReflectionEventing NuGet package. The package utilizes C# reflection to register services that can listen for and respond to local events.
Gettings started
ReflectionEventing is available as NuGet package on NuGet.org:
https://www.nuget.org/packages/ReflectionEventing
https://www.nuget.org/packages/ReflectionEventing.Autofac
https://www.nuget.org/packages/ReflectionEventing.Castle.Windsor
https://www.nuget.org/packages/ReflectionEventing.DependencyInjection
https://www.nuget.org/packages/ReflectionEventing.Ninject
https://www.nuget.org/packages/ReflectionEventing.Unity
You can add it to your project using .NET CLI:
dotnet add package ReflectionEventing.DependencyInjection
, or package manager console:
NuGet\Install-Package ReflectionEventing.DependencyInjection
🛠️ How to Use ReflectionEventing
1. Register Consumers and the Event Bus
In this step, we register our ViewModel as a singleton and add it as a consumer to the event bus. This allows the ViewModel to listen for events published on the bus.
IHost host = Host.CreateDefaultBuilder()
.ConfigureServices((context, services) =>
{
services.AddSingleton<MainWindowViewModel>();
services.AddEventBus(e =>
{
e.AddConsumer<MainWindowViewModel>();
});
}
)
.Build();
2. Publish Events
Here, we create a background service that publishes an event on the event bus. This event could be anything - in this case, we're publishing a BackgroundTicked
event.
public class MyBackgroundService(IEventBus eventBus)
{
public void PublishEvent()
{
eventBus.Publish(new BackgroundTicked());
}
}
3. Listen for Events
Finally, we implement the IConsumer<T>
interface in our ViewModel. This allows the ViewModel to consume BackgroundTicked
events. When a BackgroundTicked
event is published, the ConsumeAsync
method is called, and we update the CurrentTick
property.
public partial class MainWindowViewModel : ObservableObject, IConsumer<BackgroundTicked>
{
[ObservableProperty]
private int _currentTick = 0;
public Task ConsumeAsync(BackgroundTicked payload, CancellationToken cancellationToken)
{
CurrentTick = payload.Value;
return Task.CompletedTask;
}
}
Compilation
To build the project, use Visual Studio 2022 and open the .sln file.
Visual Studio
ReflectionEventing is an Open Source project. You are entitled to download and use the freely available Visual Studio Community Edition to build, run or develop for ReflectionEventing. As per the Visual Studio Community Edition license, this applies regardless of whether you are an individual or a corporate user.
Code of Conduct
This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community.
License
ReflectionEventing is free and open source software licensed under MIT License. You can use it in private and commercial projects.
Keep in mind that you must include a copy of the license in your project.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
.NET Framework | net461 was computed. net462 is compatible. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.6.2
- No dependencies.
-
.NETStandard 2.0
- No dependencies.
-
.NETStandard 2.1
- No dependencies.
-
net6.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages (5)
Showing the top 5 NuGet packages that depend on ReflectionEventing:
Package | Downloads |
---|---|
ReflectionEventing.DependencyInjection
Micosoft Dependency Injection service extensions with ReflectionEventing, which promotes better Inversion of Control (IoC), reducing coupling and enhancing the modularity and flexibility of your applications. |
|
ReflectionEventing.Autofac
Autofac Container module with ReflectionEventing, which promotes better Inversion of Control (IoC), reducing coupling and enhancing the modularity and flexibility of your applications. |
|
ReflectionEventing.Ninject
Ninject module with ReflectionEventing, which promotes better Inversion of Control (IoC), reducing coupling and enhancing the modularity and flexibility of your applications. |
|
ReflectionEventing.Unity
Unity container extensions with ReflectionEventing, which promotes better Inversion of Control (IoC), reducing coupling and enhancing the modularity and flexibility of your applications. |
|
ReflectionEventing.Castle.Windsor
Castle Windsor installer with ReflectionEventing, which promotes better Inversion of Control (IoC), reducing coupling and enhancing the modularity and flexibility of your applications. |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on ReflectionEventing:
Repository | Stars |
---|---|
lepoco/wpfui
WPF UI provides the Fluent experience in your known and loved WPF framework. Intuitive design, themes, navigation and new immersive controls. All natively and effortlessly.
|