최근 C#을 통한 개발을 진행 하는 도중 여러 종류의 JSON파일을 읽어 List로 변환해야 됐던 경우가 있었다.
dynamic을 이용하고, 변수를 선언하고 초기화를 하려니 내가 쓰는 JSON 라이브러리는 string을 데이터 타입으로 변환할 경우 type을 지정해줘야됐다.
하지만, 타입을 지정하는건 C#에 Type이라는 자료형이 존재하기 때문에 문제가 없으나 List의 경우 초기화할 때 자료형을 또 지정해줘야한다.
그래서 생각나는대로 List<T> 선언 시 typeof를 사용하여 Type를 지정해주었으나 오류가 발생하였다.
검색해보니 상속받은 Type 자료형의 MakeGenericType이라는 메소드를 사용하면 됐었다.
결국 아래와 같은 코드를 사용하여 해결하였다.
dynamic datas = JsonConvert.DeserializeObject(savedString, typeof(List<>).MakeGenericType(this.info.jsonType));