Chris3606 / GoRogue

.NET Standard roguelike library in C#. Features many algorithms and data structures pertinent to roguelike/2D game developers, specifically designed to be minimally intrusive upon the developer's architecture.
MIT License
494 stars 31 forks source link

Add Alternate Implementation or Flag for MessageBus that Allows Weak References #247

Open Chris3606 opened 3 years ago

Chris3606 commented 3 years ago

Although it does not fit all use cases, it can be useful to have either a flag for the existing implementation, or a separate message bus implementation that uses weak references for subscribers could be useful. This would trade the bus being an owner for the subscribers being an owner of would allow subscribers to arbitrarily disappear and not have to be removed from the bus to be GCed.

It disallows:

// object would be GCed since no strong reference is being maintained
bus.RegisterSubscriber(new SubscriberObject());

However can be useful for select cases, provided:

  1. It is not a default
  2. The method of activating/deactivating the feature makes it clear what the ramifications are
Chris3606 commented 1 year ago

I don't think it's feasible to include this in the current version; so this would be a new version of MessageBus, and won't be a breaking change.