In order to access the resource with the Key "E001" you have to know that "E001" is your key...

Why do you need to pull this out of the resource file when it is the information you need in order to access the resource in the first place?

Now, I'm noting that you are accessing the resource with the key "E001" when Resources.ERROR1 has occurred.

I really am not clear on what your problem is but consider instead of using "ERROR1" as your key value instead of "E001" to retrieve the text...then in another resource file use "ERROR1" as the key to retrieve the text "E001".

Yeah, basically, I want to have a resource file that lists all of my error codes and the corresponding messages. This way they can be translated, and they act like enum's almost when you access them from code. The only issue is that I need to separate the code (which is the Name/Key) from the message. That's why my own home-rolled implementation works well. But i'd love to be able to use resx file provided I can somehow say "Give me the string representation of the Key/Name E001", or whatever the error code might be.

It would be awesome to do Resources.E001.GetName(); haha

Then when I want to throw an error, I can just say, get the error from the resource file, and the from the resource file I can get the string representation of the key, as well as the message.

I had an Enum containing a bunch of error codes.
I took all of the Enum Keys, added them as Keys to my Resx file, and supplied user friend messages as the values.

The code I called returned an Enum value indicating if my function-call executed successfully...if not I was able retrieve the user friendly error message from the Resx resource based on the Key of the Enum value the function returned.

There may be a better way around this because I was using an unmanaged DLL that didn't throw errors. Therefore, I had to implement my solution in this way since the unmanaged code returned Enum values instead of throwing errors.

Check out the enum class for more information on what enum methods are available to you.

Yeah, this is sort of how I rolled my own implementation. Except enum's in C# are a little stupid, so I made my own "enum" style class that reads from a properties file to get the key/value pairs. That way I can just translate the properties file and it's good to go.