CLR을 바탕으로 한 DLR(Dynamic Language Runtime) 라이브러리를 통해, 루비나 파이썬 같은 동적 언어도 닷넷 프레임워크에 실행될 수 있다. 이런 동적 언어로 만들어진 프로그램의 타입을 정적 언어인 C#에 연동하기 위해 dynamic 예약어가 제공된다.
dynamic 예약어
💡 샘플 코드
static void Main(string[] args)
{
var a = 5;
//a = "str"; //컴파일 오류 : 앞 줄에서 a의 타입이 int로 결정되었음.
dynamic b = 10;
b = "str"; //b의 형식이 결정되지 않음.
}
리플렉션 개선
NewType variable;
Type type = variable.GetType();
MethodInfo methodInfo = type.GetMethod("MethodName");
dynamic variable;
variable.MethodName();
덕 타이핑
💡 샘플 코드
static void Main(string[] args)
{
string str = "test executed";
List <int> list = new List<int> { 1,2,3,4,5};
Console.WriteLine(DuckTypingCall(str,"exe"));
Console.WriteLine(DuckTypingCall(list,3));
}
static int DuckTypingCall(dynamic target, dynamic item)
{
return target.IndexOf(item);
}
✅ 결과
5
2
동적 언어와의 타입 연동
참고자료