programing

문자열을 열거 형으로 캐스팅

nasanasas 2020. 10. 25. 12:25
반응형

문자열을 열거 형으로 캐스팅


이 질문에 이미 답변이 있습니다.

파일 내용을 읽고 있으며 이와 같은 정확한 위치에서 문자열을 가져옵니다.

 string fileContentMessage = File.ReadAllText(filename).Substring(411, 3);

출력은 항상 Ok또는Err

다른쪽에 MyObjectContentEnum이런식이 있습니다

public class MyObject

    {
      public enum ContentEnum { Ok = 1, Err = 2 };        
      public ContentEnum Content { get; set; }
    }

이제 클라이언트 측에서 다음과 같은 코드를 사용하고 싶습니다 (내 문자열 fileContentMessageContent속성 으로 캐스팅 하기 위해 )

string fileContentMessage = File.ReadAllText(filename).Substring(411, 3);

    MyObject myObj = new MyObject ()
    {
       Content = /// ///,
    };

사용 Enum.Parse().

var content = (ContentEnum)Enum.Parse(typeof(ContentEnum), fileContentMessage);

추가로, Enum.Parse이미 제공된 답변을 가져 와서 헬퍼 클래스의 사용하기 쉬운 정적 메서드에 넣을 수 있습니다.

public static T ParseEnum<T>(string value)
{
    return (T)Enum.Parse(typeof(T), value, ignoreCase: true);
}

다음과 같이 사용하십시오.

{
   Content = ParseEnum<ContentEnum>(fileContentMessage);
};

구문 분석 할 (다른) 열거 형이 많은 경우 특히 유용합니다.


.NET 4.0+에는 일반 Enum.TryParse가 있습니다.

ContentEnum content;
Enum.TryParse(fileContentMessage, out content);

다음과 같은 것을 사용해보십시오.

Enum.TryParse

하나 이상의 열거 상수의 이름 또는 숫자 값의 문자열 표현을 해당하는 열거 개체로 변환합니다. 매개 변수는 작업이 대소 문자를 구분하는지 여부를 지정합니다. 반환 값은 변환이 성공했는지 여부를 나타냅니다.

또는

Enum.Parse

하나 이상의 열거 상수의 이름 또는 숫자 값의 문자열 표현을 해당하는 열거 개체로 변환합니다.

참고 URL : https://stackoverflow.com/questions/13970257/casting-string-to-enum

반응형