Recent Posts
Recent Comments
Link
관리 메뉴

NaggingMachine

dynamic의 GetType()이 뭐냐고? 본문

Visual Studio

dynamic의 GetType()이 뭐냐고?

naggingmachine 2009. 5. 21. 23:26
한 C# MVP가 오늘 이런 질문을 했습니다. 초기화되지 않은 dynamic의 타입, 그러니까 GetType()으로 반환되는 타입은 도대체 뭐냐?고 말이죠. 그러면서 왜 초기화되지 않은 dynamic 타입에 GetType() 메서드를 호출하면 예외(Exception)이 발생하는 것이냐?

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException says:
        Cannot perform runtime binding on a null reference
이런 질문은 한마디로
참 바보같군요.(정말?)

라고 할 수 있겠습니다. 왜냐구요? dynamic은 런타임시에 객체가 할당된 경우에만 작동하는 스페셜한 타입이기 때문입니다. 자, 그렇다면 이렇게 생각해볼 수도 있습니다.

누가 dynamic이 바인딩하고 있는 타입을 알려달랬어?
System.Dynamic 이라고 알려주면 되잖아!!

생각해보니 맞는말인듯 싶습니다. 만약 dynamic 타입의 변수가 바인딩되지 않은 상태라면 예외를 발생시키지 말고 System.Dynamic 이라고 표현할 수도 있지 않을까 싶습니다. 작성하는 코드에 따라서 dynamic 변수가 바인딩되어 있을 수도 있고 그렇지 않을 수도 있으니 그걸 확인할 수 있도록 말입니다. 현재로서는 RunTimeBinderException 예외가 발생하는지를 비교하는 수 밖에 없을것 같습니다.

dynamic 바인딩 여행은 앞으로도 쭈욱~