BetterEventSystem 1.1.0

Suggested Alternatives

Addikted.BetterEventSystem

Additional Details

It has been moved to Addikted.BetterEventSystem

There is a newer version of this package available.
See the version list below for details.
dotnet add package BetterEventSystem --version 1.1.0
                    
NuGet\Install-Package BetterEventSystem -Version 1.1.0
                    
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="BetterEventSystem" Version="1.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="BetterEventSystem" Version="1.1.0" />
                    
Directory.Packages.props
<PackageReference Include="BetterEventSystem" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add BetterEventSystem --version 1.1.0
                    
#r "nuget: BetterEventSystem, 1.1.0"
                    
#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.
#:package BetterEventSystem@1.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=BetterEventSystem&version=1.1.0
                    
Install as a Cake Addin
#tool nuget:?package=BetterEventSystem&version=1.1.0
                    
Install as a Cake Tool

BetterEventSystem

To create an event, simply create a new instance of the event class and pass it the name of the event. new Event("my_event"). then, you can add listeners to the event by calling Event.AddEvent(listener) on the event instance.

note: listeners must take one argument, of the BetterEventSystem.EventArgs type


To get the event instance, simply call EventSystem.GetEvent("my_event"). this will also create the event if it doesnt exist (disable this by setting the safe paramater to true.


Finally, to broadcast / trigger the event, simply call Event.Broadcast(). If the event allows async (which it does by default), then the event will be broadcasted asynchronously.

You can call Event.BroadcastSync() or Event.BroadcastAsync() to be explicit about the async nature of the broadcast.

You can pass any object to any of the broadcast methods, and it will be passed to all listeners in the EventArgs.data property.


Example:

using BetterEventSystem;

// create the event, and add a listener
new Event("my_event").AddListener((e) => {
    Console.WriteLine("my_event was triggered");
});

// add another listener
EventSystem.GetEvent("my_event").AddListener((e) => {
    Console.WriteLine("my_event was triggered, but I'm a different listener");
});

// this event doesnt exist, but it will be created with default values. you can edit the Event after creation if you want
EventSystem.GetEvent("my_other_event").AddListener((e) => {
    Console.WriteLine("my_other_event was triggered");
});


Console.Write("Press any key to trigger events...");
Console.ReadKey(); // wait for user input
Console.Clear(); // clear the console

// trigger the event
EventSystem.GetEvent("my_other_event").Broadcast();
EventSystem.GetEvent("my_event").Broadcast();

Output:

my_other_event was triggered
my_event was triggered, but I'm a different listener
my_event was triggered

There are other things you can do with events, I will create more detailed docs on readthedocs soon. The code is pretty self explanatory, so check out the github!

Product Compatible and additional computed target framework versions.
.NET 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 was computed.  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.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0

    • No dependencies.

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.2.1 306 4/1/2025
1.1.2 758 3/28/2022 1.1.2 is deprecated.
1.1.1 726 3/26/2022 1.1.1 is deprecated.
1.1.0 706 3/25/2022 1.1.0 is deprecated.
1.0.1 708 3/24/2022 1.0.1 is deprecated.
1.0.0 706 3/24/2022 1.0.0 is deprecated.