ContainsKey - you could use Emplace() which returns false if the key is used
GetOrThrow - not really sure why you would want to throw, i always hated the fact that dictionaries throw while the key is not found. It returns a default value in which you can decide whether you want to throw or not.
These changes would be a great addition: