[.Net] 문자열을 Enum형으로 바꾸기

원문 : How do you convert a string into an enum?

C#으로 코딩을 하다가 보면 Enum형과 문자열을 상호 변환해야 하는 경우가 많이 발생한다.
본인의 경우 현재 제작하는 프로그램에서도 이러한 필요를 많이 느꼈지만 이 문제를 해결할 못하고 문자열에서 Enum으로 변경할 때 필요한 정보를 따로 하나 더 가짐으로써 문제를 해결하고 있다.

예를 들자면

- 권한정보 테이블이 있는데, 메뉴/툴박스/링크 등에 대한 권한 정보가 구분자로 분리되어 들어가 있다.

- Enum형으로 각각의 항목에 대해 설정하고 처리를 할 수도 있을 것이다. 하지만 테이블에 들어가있는 문자열을 가지고 Enum형으로 역변환해서 처리를 하고 싶은데 그 방법을 모르겠다.

과하게 말하자면 Reflection해서 어느 객체에 해당하는질 알아내서 처리할 수 있게 하려는 경우가 발생할 수도 있다. 그때는 아래메써드를 사용하면 원하는 결과를 얻을 수 있을 것이다.

object Enum.Parse(System.Type enumType, string value, bool ignoreCase);

아래 코드 예제를 참조하기 바란다.

[CODE] enum Colour { Red, Green, Blue } // … Colour c = (Colour) Enum.Parse(typeof(Colour), “Red”, true); Console.WriteLine(“Colour Value: {0}”, c.ToString()); // 주어진 Enum형에 존재하지 않는 문자열이 전달되었을 때 // ArgumentException을 발생시킨다. // 이러한 예외 발생을 방지하기 위해 // Enum.IsDefined()을 사용하여, 미리 판단해준다. string nonColour = “Polkadot”; if (Enum.IsDefined(typeof(Colour), nonColour)) c = (Colour) Enum.Parse(typeof(Colour), nonColour, true); else MessageBox.Show(“Uh oh!”); [/CODE]

원문에서 필요로 하는 부분만 추려서 역어봤습니다.

조금만 더 빨리 알았더라면 프로젝트를 쉽게 끌고 나갔을텐데 하는 아쉬움이 많이 남는 코드입니다. 뭐, 어쩔수 없조 다음 버전업 때 다시 얘기해보는 수 밖에… -_-;

출처 : http://blog.empas.com/ttjkim/2468561

Leave a Reply

You can use these XHTML tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>