https://github.com/farlee2121/bidirectionalmap
A two-way lookup for dotnet standard
https://github.com/farlee2121/bidirectionalmap
dotnet dotnet-standard map
Last synced: about 2 months ago
JSON representation
A two-way lookup for dotnet standard
- Host: GitHub
- URL: https://github.com/farlee2121/bidirectionalmap
- Owner: farlee2121
- Created: 2020-04-22T12:24:25.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2025-01-06T23:18:02.000Z (5 months ago)
- Last Synced: 2025-03-29T07:04:31.068Z (2 months ago)
- Topics: dotnet, dotnet-standard, map
- Language: C#
- Homepage:
- Size: 56.6 KB
- Stars: 17
- Watchers: 1
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: ReadMe.md
Awesome Lists containing this project
README
Bidirectional Map
=================

[](https://codecov.io/gh/farlee2121/BidirectionalMap)
[](https://www.nuget.org/packages/BidirectionalMap/)Exactly what it sounds like. This library offers a single class `BiMap` that let's you define a two-way one-to-one map between values
the same way you would define a one-way map with a dictionary.Example:
--------```cs
using BidirectionalMap;BiMap map = new BiMap(){
{1, "Circle"},
{2, "Triangle"},
{3, "Square"},
};var mappedString = map.Forward[1]; //"Circle"
var mappedInt = map.Reverse["Circle"]; // 1
```It isn't limited to value types
```cs
BiMap map = new BiMap(){
{1, () => /* do something*/},
};var action = map.Forward[1];
```Why?
---Well, table-driven value mapping is a very powerfull technique that makes conversions more readable, easier to update, and easier to load from non-code sources.
Some common scenarios for this kind of technique include
- Mapping to some kind of storage (say, converting between enum and string)
- Mapping display values to and from requests
- Wrapping other code (adapter-style) to consume the api on your own terms
- Choosing an action or configuration based on some kind of type value (this is usually just one-way though)Install
-------Available via nuget at https://www.nuget.org/packages/BidirectionalMap/
Feedback/Bugs/Contribution
--------------------------
Feel free to open an issue to start the conversation.