ReflectionEventing 2.0.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package ReflectionEventing --version 2.0.1                
NuGet\Install-Package ReflectionEventing -Version 2.0.1                
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="ReflectionEventing" Version="2.0.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ReflectionEventing --version 2.0.1                
#r "nuget: ReflectionEventing, 2.0.1"                
#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 ReflectionEventing as a Cake Addin
#addin nuget:?package=ReflectionEventing&version=2.0.1

// Install ReflectionEventing as a Cake Tool
#tool nuget:?package=ReflectionEventing&version=2.0.1                

🚎 ReflectionEventing

Created with ❤ in Poland by lepo.co
Unleash the power of decoupled design with eventing. ReflectionEventing empowers developers to create simple events between services using DI in WPF, WinForms, or CLI applications. By facilitating better Inversion of Control, ReflectionEventing helps reduce coupling, enhancing the modularity and flexibility of your applications.

GitHub license Nuget Nuget Sponsors

👀 What does this repo contain?

The repository contains NuGet package source code, which uses C# reflection to register services that can be used to listen for 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.DependencyInjection

You can add it to your project using .NET CLI:

dotnet add package ReflectionEventing.DependencyInjection

, or package manager console:

NuGet\Install-Package ReflectionEventing.DependencyInjection

Usage

Register consumers and bus
IHost host = Host.CreateDefaultBuilder()
  .ConfigureServices((context, services) =>
    {
      _ = services.AddSingleton<MainWindowViewModel>();
      _ = services.AddEventBus(e =>
      {
        _ = e.AddConsumer<MainWindowViewModel>();
      });
    }
  )
  .Build();
Publish your event
public class MyBackgroundService(IEventBus eventBus)
{
    public void PublishEvent()
    {
        eventBus.Publish(new BackgroundTicked());
    }
}
Now you can listen for the event
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

Use Visual Studio 2022 and invoke the .sln.

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .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.