I am planning to write a C# application that reads from a video game's memory and lists the various active objects in the current level. I have completely mapped out each object's unique identifier, resulting in a large list of String:UInt32 pairs. Since I'm aiming to have this program update object statuses in near real-time, I need a way of being able to cross reference Strings with their respective UInt32s and vice versa.
Normally, I would use a Dictionary map for this task. However, I know that Dictionaries are often purposed to allow dynamic values paired with a key, meaning that you can get the value from a key efficiently, but cannot get the key with a value without iterating through each key until the correct one is found. The data I will be storing will be constant.
Is there a way for me to create a Key:Key structure to allow efficient cross referencing the Strings and UInt16s with their respective counterparts? At the very least, is there a way to search through a dictionary as if the value were a key itself?