C#으로 윈도우 프로그래밍 할일이 생겨서 오랜만에 C#을 건드렸다가 System.MethodAccessException 와 같은 에러를 만났습니다.
IBatisNet으로 Mapper를 사용해서 DB에 접근하는 소스에서 Mapper가 QueryForList를 통해서 DB에 select 하는 과정에서 발생했습니다.
'DynamicClass.CreateImplementation(System.Object[])' 메서드가 'TableDependency.Model.master.AreaDefVO..ctor()' 메서드에 액세스하지 못했습니다.
처음에는 IBatis의 사용에서 문제가 있지 않을까란 생각에 이런저런 시도를 다 해본결과 Mapper를 생성하는 과정에서 발생할수 있는 문제는 이름이 매칭 되지 않아서 발생할 수 있는 문제들이 대부분이지 접근 관련 문제는 발생하지 않는다는 걸 확인할 수 있었습니다.
그럼 무슨 문제인지 싶어서 기존의 VO파일들과 접근이 안되는 VO파일을 비교해보다가 이유를 알 수 있었습니다.
이유는 VO 파일에 접근지정자 public을 뺴먹었다 였습니다.
너무 기초적인 문제의 실수라 저도 모르게 아무생각 없이 VO를 만들다가 넣는걸 잊었네요..
이런 문제에 시간을 생각보다 많이 뺏겨서 같은 실수를 다시 반복하지 말자란 생각으로 정리합니다.