열거형 구조체 ? 관련 질문입니다.

기존 열거형에 2가지 값이 적용이 되있는데 계속 추가되어질 사항이 생기게 되었습니다.

추가 / 변경 될 때 마다 해당 열거형 구조체에서 수동으로 기록을 하는 방법밖에 없나 싶어서 질문했습니다.

public enum PacketGroupEnum
{
    Front,
    Floor3
}

이런식으로 정의 되있을 때 예를 들어

main()
{
    var record = DB.select();
    PacketGroupEnum.add("loof");
}

public enum PacketGroupEnum
{
    Front,
    Floor3
    <loof> //동적추가
}
좋아요 1

enum 타입은 코드 수준에서 정의하는 타입이기 때문에 동적으로 확장할 수 있는 방법이 없습니다.

혹시 말씀하시는 enum 타입 정의를 동적으로 추가하는 것이 별도의 명세가 있고, 이 명세를 따르는 외부 SDK를 출시하는 과정 중에 발생하는 일이라면, 클래스 라이브러리나 EXE 파일을 재배포할 수 있다는 전제 조건에서 Assembly Emitting을 이용하거나, Code Generator를 이용할 수는 있겠습니다.

그러나 이런 과정 없이 순수하게 비즈니스 레벨에서 enum 타입의 멤버를 동적으로 추가하는 옵션은 C#을 포함해서 모든 프로그래밍 언어가 지원하지 못하는 부분입니다.

이런 부분은 코드의 기능보다는 “설계” 관점에서 다시 고민해보시는 것이 적절하다고 생각합니다.

좋아요 5