즐겁게 개발을...

개발보다 게임이 더 많이 올라오는 것 같은...

개발/C#

Enum 사용 시 인덱스가 순차적이지 않을 때 처리방법

다물칸 2024. 2. 15. 15:14
728x90

인덱스대로 하지 않아도 되는데, 궂이 이렇게 Enum을 선언했을 때 해당 값을 Combobox에서 가져오는 방법을 제시해본다. 

 

        private enum DB_USER_ROLE
        {
            UNKNOWN = 0,
            WORKER = 2,
            INFRA_ADMIN = 8,
            SUPER_ADMIN = 9,
        }
        
        // 콤보박스에는 이런식으로 넣을 수 있다. String만 들어가기에 뭔가 변환함수를 만들어야 한다.
        CboUserRole.Items.AddRange(Enum.GetNames(typeof(DB_USER_ROLE)));

상수는 위와 같다.

        private DB_USER_ROLE GetUserRole()
        {
            Dictionary<DB_USER_ROLE, string> dicUserRole = new Dictionary<DB_USER_ROLE, string>();
            string[] lstUserRole = Enum.GetNames(typeof(DB_USER_ROLE));
            var lstValue = Enum.GetValues(typeof(DB_USER_ROLE));

            for (int i = 0; i < lstUserRole.Length; i++)
            {
                dicUserRole.Add((DB_USER_ROLE)lstValue.GetValue(i), lstUserRole[i]);
            }

            foreach (KeyValuePair<DB_USER_ROLE, string> kvp in dicUserRole) 
            {
                if (kvp.Value == CboUserRole.Text)
                {
                    return kvp.Key;
                }
            }

            return DB_USER_ROLE.UNKNOWN;
        }

 

위 함수는 특정 Enum에 대해서만 처리되도록 되어 있지만, T객체를 이용해서 범용적으로도 사용할 수 있을 것 같다. 

 

 

 

[2022.11] Enum Display name옵션으로 처리하는 방법

[2021.05] Enum을 Combobox에 값을 넣을 때 Foreach 문 활용방법 자주 사용하는 구문인데 맨날 기억이 나지 않아 예전 소스를 찾아 헤매는 것을 방지하기 위해 간단하지만 올립니다. foreach (string item in Enum

endev.tistory.com

그런데 이게 더 좋아서 다시 이걸로 바꿨다. 만들어놓고 또 만들었네.. T_T

반응형