MutableLookup 1.0.0
dotnet add package MutableLookup --version 1.0.0
NuGet\Install-Package MutableLookup -Version 1.0.0
<PackageReference Include="MutableLookup" Version="1.0.0" />
paket add MutableLookup --version 1.0.0
#r "nuget: MutableLookup, 1.0.0"
// Install MutableLookup as a Cake Addin #addin nuget:?package=MutableLookup&version=1.0.0 // Install MutableLookup as a Cake Tool #tool nuget:?package=MutableLookup&version=1.0.0
MutableLookup
A .NET Standard 2.0 library for mutable ILookup
collections.
Defines an interface IMutableLookup
for defining mutable ILookup
containers:
public interface IMutableLookup<TKey, TElement> : ILookup<TKey, TElement>
{
void Add(TKey key, TElement value);
bool Remove(TKey key);
bool Remove(TKey key, TElement value);
void Clear();
bool TryGetValues(TKey key, out IEnumerable<TElement> values);
}
Comes with a few predefined types that utilise .NET's own generic collection types:
ListLookup<TKey, TElement>
equivalent toDictionary<TKey, List<TElement>>
LinkedListLookup<TKey, TElement>
equivalent toDictionary<TKey, LinkedList<TElement>>
HashSetLookup<TKey, TElement>
equivalent toDictionary<TKey, HashSet<TElement>>
Each type has its own advantages and disadvantages based on use case requirements.
Installation
Install MutableLookup
through NuGet:
NuGet install MutableLookup
NuGet package page: https://www.nuget.org/packages/MutableLookup
Implementing your own IMutableLookup
The library comes with the MutableLookup
abstract class which allows trivial definition of a new IMutableLookup. Given a type MyCollection<TElement>
that implements ICollection<TElement>
, you can define a new IMutableLookup type like this:
public sealed class MyCollectionLookup<TKey, TElement>
: MutableLookup<TKey, TElement, MyCollection<TElement>> { }
If your collection does not implement a constant time .Count
property, you should override the bool IsContainerEmpty(TContainer container)
method to efficiently see if the container is empty.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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. |
.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 was computed. |
.NET Framework | net461 was computed. net462 was computed. 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. |
-
.NETStandard 2.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.0.0 | 2,767 | 10/15/2017 |