A set of types that extends C# collection types.
LimitedQueue
A Queue with a maximum number of items inside.
var queue = new LimitedQueue<Entity>(5); // Max of 5 items in the queue
queue.Enqueue(entity); // Enqueue an item
var result = queue.TryDequeue(); // Try to dequeue an item
if (result.Success)
{
var item = result.Value; // Access dequeued item
}
queue.Enqueued += (sender, e) => {}; // Listen to enqueued items
queue.Dequeued += (sender, e) => {}; // Listen to dequeued itemsLimitedStack
A Stack with a maximum number of items inside.
var stack = new LimitedStack<Entity>(5); // Max of 5 items in the stack
stack.Push(entity); // Push an item
var result = stack.TryPop(); // Try to pop an item
if (result.Success)
{
var item = result.Value; // Access popped item
}
stack.Pushed += (sender, e) => {}; // Listen to pushed items
stack.Popped += (sender, e) => {}; // Listen to popped itemsEntityList
A List to store unique items based on a key. A mix between a List<TEntity> and a Dictionary<TKey, TEntity>.
var list = new EntityList<int, Entity>(e => e.Id);
// Upsert a new item
// Add if the key does not exist in the list, update otherwise
list.Upsert(entity);
var entity = list.Find(1); // Find item by key
bool success = list.Remove(1); // Remove using the key
list.Added += (sender, e) => {}; // Listen to added entities
list.Updated += (sender, e) => {}; // Listen to updated entities
list.Removed += (sender, e) => {}; // Listen to removed entities