Skip to content
GitLab
Explore
Projects
Groups
Snippets
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
general
libs
KludgeBox Modular
Commits
648f5737
Commit
648f5737
authored
1 year ago
by
Bronuh
Browse files
Options
Download
Email Patches
Plain Diff
Refactor EventBus from static to instance class in KludgeBox.Events module
parent
dffb9d97
master
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
KludgeBox.Events/EventBus.cs
+10
-10
KludgeBox.Events/EventBus.cs
with
10 additions
and
10 deletions
+10
-10
KludgeBox.Events/EventBus.cs
+
10
-
10
View file @
648f5737
...
...
@@ -7,15 +7,15 @@ namespace KludgeBox.Events;
/// <summary>
/// Provides a central event bus for publishing and subscribing to events.
/// </summary>
public
static
class
EventBus
public
class
EventBus
{
/// <summary>
/// If set to true, EventBus will attempt to publish events to all EventHubs whose types are derived from the event type.
/// This option can significantly impact performance.
/// </summary>
public
static
bool
IncludeBaseEvents
=
true
;
public
bool
IncludeBaseEvents
=
true
;
private
static
Dictionary
<
Type
,
EventHub
>
_hubs
=
new
Dictionary
<
Type
,
EventHub
>();
private
Dictionary
<
Type
,
EventHub
>
_hubs
=
new
Dictionary
<
Type
,
EventHub
>();
/// <summary>
/// Subscribes a listener to the specified event type.
...
...
@@ -23,7 +23,7 @@ public static class EventBus
/// <typeparam name="T">The event type to subscribe to.</typeparam>
/// <param name="action">The action to execute when the event is published.</param>
/// <returns>A listener token that can be used to unsubscribe from the event.</returns>
public
static
ListenerToken
Subscribe
<
T
>(
Action
<
T
>
action
)
where
T
:
IEvent
public
ListenerToken
Subscribe
<
T
>(
Action
<
T
>
action
)
where
T
:
IEvent
{
return
GetHub
(
typeof
(
T
)).
Subscribe
(
action
);
}
...
...
@@ -33,7 +33,7 @@ public static class EventBus
/// </summary>
/// <typeparam name="T">The type of event to publish.</typeparam>
/// <param name="event">The event to publish.</param>
public
static
void
Publish
<
T
>(
T
@event
)
where
T
:
IEvent
public
void
Publish
<
T
>(
T
@event
)
where
T
:
IEvent
{
if
(
IncludeBaseEvents
)
{
...
...
@@ -51,7 +51,7 @@ public static class EventBus
/// <summary>
/// Resets all the EventHubs.
/// </summary>
public
static
void
Reset
()
public
void
Reset
()
{
_hubs
.
Clear
();
}
...
...
@@ -60,12 +60,12 @@ public static class EventBus
/// Resets the EventHub associated with the specified event type.
/// </summary>
/// <typeparam name="T">The event type for which to reset the EventHub.</typeparam>
public
static
void
ResetEvent
<
T
>()
where
T
:
IEvent
public
void
ResetEvent
<
T
>()
where
T
:
IEvent
{
GetHub
(
typeof
(
T
)).
Reset
();
}
private
static
EventHub
GetHub
(
Type
eventType
)
private
EventHub
GetHub
(
Type
eventType
)
{
if
(
_hubs
.
TryGetValue
(
eventType
,
out
EventHub
?
hub
)
&&
hub
is
not
null
)
{
...
...
@@ -83,7 +83,7 @@ public static class EventBus
/// </summary>
/// <param name="methodInfo">The MethodInfo representing the delivery action.</param>
/// <returns>Message subscription token that can be used for unsubscribing.</returns>
public
static
ListenerToken
SubscribeMethod
(
MethodInfo
methodInfo
)
public
ListenerToken
SubscribeMethod
(
MethodInfo
methodInfo
)
{
Type
messageType
=
methodInfo
.
GetParameters
()[
0
].
ParameterType
;
...
...
@@ -96,7 +96,7 @@ public static class EventBus
.
Invoke
(
null
,
new
object
[]
{
actionDelegate
})
as
ListenerToken
;
}
private
static
List
<
EventHub
>
FindApplicableHubs
(
Type
eventType
)
private
List
<
EventHub
>
FindApplicableHubs
(
Type
eventType
)
{
List
<
EventHub
>
applicableHubs
=
new
List
<
EventHub
>();
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Snippets